首页 > 解决方案 > 如何在 Flutter 中取消 StreamBuilder 的订阅?

问题描述

我目前面临一个问题,即我的整个HomeScreen页面都依赖于StreamBuilder它从 Firestore 接收的数据。

一切正常,但是当我单击退出时,出现此错误:

调用者没有执行指定操作的权限。

这是我的 Firestore 安全规则:

rules_version = '2';

service cloud.firestore {

match /databases/{database}/documents {

 match /{document=**} {

  allow read, write: if request.auth != null;

  }

 }

}

我做了一些研究,发现原因可能是我在按注销时没有取消订阅流。这是我的流生成器​​代码:

late Stream<QuerySnapshot<Map<String, dynamic>>> bookSnapshot =
      firestore.collection('books').snapshots();
StreamBuilder<QuerySnapshot>(
   stream: bookSnapshot,
   builder: (context, snapshot) {
   ...
   }
),

我对这个概念相当陌生,我真的需要关于如何取消订阅流的帮助。

非常感谢任何帮助,谢谢!

标签: firebasefluttergoogle-cloud-firestorefirebase-authenticationfirebase-security

解决方案


推荐阅读