在我的Flutter应用中,
StreamSubscription
无法暂停或取消。当我调用cancel()
如果它在启动之前开始,它会停止。如果我在启动后调用cancel()
,它将不会停止。我正在使用Firestore快照监听器。以下是我的代码。
我尝试了不同的方法,但仍然无法正常工作。问题在于Firestore listener
在加载数据后没有停止。 StreamSubscription<QuerySnapshot> streamSubscription;
@override
void initState() {
super.initState();
print("Creating a streamSubscription...");
streamSubscription =Firestore.collection("name").document("d1").collection("d1")
.snapshots().listen((data){
//It will display items
}, onDone: () { // Not excecuting
print("Task Done");
}, onError: (error) {
print("Some Error");
});
streamSubscription.cancel(); //It will work but cancel stream before loading
}
@override
void dispose() {
streamSubscription.cancel(); //Not working
super.dispose();
}
stream.close()
应该改为stream.cancel()
,而StreamSubscription
应该被称为streamSubscription
或subscription
而不是stream
,因为这很容易引起混淆,因为Stream
是完全不同的东西。 - Günter Zöchbauer