首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Flutter作为服务的Firebase Firestore

Flutter作为服务的Firebase Firestore
EN

Stack Overflow用户
提问于 2022-11-07 20:01:02
回答 1查看 44关注 0票数 0

在“颤振”中,我想要创建一个类,作为Firebase Firestore 的一个服务。

因此,与其听文档更改,不如直接从控制器/模型中更改,如下所示:

代码语言:javascript
运行
复制
StreamSubscription<DocumentSnapshot> listener = FirebaseFirestore.instance
  .collection('products')
  .doc(productId)
  .snapshots()
  .listen(_onProductUpdate);

我在服务中将有一个方法,它将委托该流,如下所示:

代码语言:javascript
运行
复制
Stream<Product> listenToProduct(String productId) {
  return FirebaseFirestore.instance.collection('products')
    .doc(productId)
    .snapshots()
    .map((snapshot) => Product.fromJson(snapshot.data()!));
}

我的控制器/模型会这样使用它:

代码语言:javascript
运行
复制
GetIt.I<FirestoreService>()
    .listenToProduct(productId)
    .listen(_onProductUpdate);

我唯一的问题是,在第二种情况下,我不知道如何取消订阅侦听器。

我的意思是,当我直接听Firestore时,我可以使用:

代码语言:javascript
运行
复制
listener.cancel();

如何使用我的Firestore服务来实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-08 02:31:02

创建一个static StreamSubscription? subscription;变量,并将侦听引用到该变量subscription = reference.onValue.listen...,然后可以使用

代码语言:javascript
运行
复制
if (subscription != null) {
      subscription!.cancel();
    }

取消它

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74352285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档