簡體   English   中英

如何處理或關閉 Firestore 的監聽功能?

[英]How can i dispose or close a listen function from Firestore?

我有這個監聽功能到stful ,我需要在按下后退按鈕時關閉它

    class Test extends StatefulWidget {
      const Test({Key key}) : super(key: key);
    
      @override
      _TestState createState() => _TestState();
    }
    
    class _TestState extends State<Test> {
    
      handleDelete(){
    
        FirebaseFirestore.instance.collection("handleCountM").limit(1).snapshots().listen((value) {
          value.docs.forEach((element) {
            element.reference.delete();
          });
        });

  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

我不知道我怎么能阻止它進入dispose()

listen()方法返回一個StreamSubscription ,它有一個cancel()訂閱的cancel()方法。 調用此方法后,訂閱不再接收事件。

看看這篇文章,它展示了如何:

  1. StreamSubscription對象存儲在狀態中以便能夠在處理時取消訂閱。
  2. dispose()調用cancel()方法
Stream<QuerySnapshot<Map<String, dynamic>>> myStream = FirebaseFirestore.instance.collection("handleCountM").limit(1).snapshots();

late StreamSubscription<QuerySnapshot<Map<String, dynamic>>> streamSubscription;
  

void handleDelete() {
    streamSubscription = myStream.listen((value) {
      value.docs.forEach((element) {
        element.reference.delete();
      });
    });
  }


  @override
  void dispose() {
    streamSubscription.cancel(); //Cancel your subscription here.
    super.dispose();
  }

您的另一種選擇是使用流構建器,它會為您處理訂閱和終止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM