我如何处理或关闭 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() 方法 returns 取消订阅的 StreamSubscription which has a cancel() 方法。调用此方法后,订阅不再接收事件。

看看这个 article 它展示了如何:

  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();
  }

您的另一种选择是使用 streambuilder,它将为您处理订阅和终止。