在“颤振”中,我想要创建一个类,作为Firebase Firestore 的一个服务。
因此,与其听文档更改,不如直接从控制器/模型中更改,如下所示:
StreamSubscription<DocumentSnapshot> listener = FirebaseFirestore.instance
.collection('products')
.doc(productId)
.snapshots()
.listen(_onProductUpdate);我在服务中将有一个方法,它将委托该流,如下所示:
Stream<Product> listenToProduct(String productId) {
return FirebaseFirestore.instance.collection('products')
.doc(productId)
.snapshots()
.map((snapshot) => Product.fromJson(snapshot.data()!));
}我的控制器/模型会这样使用它:
GetIt.I<FirestoreService>()
.listenToProduct(productId)
.listen(_onProductUpdate);我唯一的问题是,在第二种情况下,我不知道如何取消订阅侦听器。
我的意思是,当我直接听Firestore时,我可以使用:
listener.cancel();如何使用我的Firestore服务来实现这一点?
发布于 2022-11-08 02:31:02
创建一个static StreamSubscription? subscription;变量,并将侦听引用到该变量subscription = reference.onValue.listen...,然后可以使用
if (subscription != null) {
subscription!.cancel();
}取消它
https://stackoverflow.com/questions/74352285
复制相似问题