停止在云扑克中收听快照更新

Sha*_*ran 3 flutter google-cloud-firestore

我想停止收听快照更新.即使在屏幕关闭后,快照仍会继续监听更新.我使用以下代码来收听更新.

CollectionReference reference = Firestore.instance.collection('Events');
reference.snapshots().listen((querySnapshot) {
  querySnapshot.documentChanges.forEach((change) {
    // Do something with change
  });
})
Run Code Online (Sandbox Code Playgroud)

azi*_*iza 9

您的侦听器属于类型StreamSubscription,因此您可以在侦听器上调用一些有用的方法,例如cancel()

    CollectionReference reference = Firestore.instance.collection('Events');
StreamSubscription<QuerySnapshot> streamSub = reference.snapshots().listen((querySnapshot) {
  querySnapshot.documentChanges.forEach((change) {
    // Do something with change
  });
});
//somewhere
streamSub.cancel();
Run Code Online (Sandbox Code Playgroud)

  • 取消您的订阅不仅仅是“在某个地方”,而且当不再需要它时,通常您需要重写方法`dispose()`,如下所示:`@override void dispose() { if(streamSub!= null) streamSub 。取消(); 超级.dispose(); }` (4认同)

Rém*_*let 6

listen方法返回一个Subscription

该类用于取消监听。

您应该在您的状态中存储该对象以在处理时取消订阅。