我如何才能 firestore 流 snapsnot 暂停

How can i firestore stream snapsnot pause

我有一个由选项卡组成的结构。我在听你在哪个标签页。我在标签页

中使用AutomaticKeepAliveClientMixin
late StreamSubscription _subscription;

@override
  void initState() {
    super.initState();
    _subscription = FirebaseFirestore.instance
  .collection('users')
  .doc(id)
  .snapshots().listen((DocumentSnapshot snapshot) => _onUpdate(snapshot));
    widget.tab?.addListener(_tabListener);
  }

@override
  void dispose() {
    _subscription.cancel();
    widget.tab?.removeListener(_tabListener);
    super.dispose();
  }

_tabListener () {
    if(widget.tab?.page == 0.0) {
      if(_subscription.isPaused) {
        _subscription.resume();
      }
    } else {
      _subscription.pause();
    }
  }

目前没问题,它停止监听并从中断处继续,但当它再次启动时,它会带来停止时发生的所有变化。

在后台不断发送快照更改。

我希望流在选项卡更改时完全停止,并在涉及选项卡时重新开始,我该怎么做?

根据 the StreamSubscription pause method documentation,如果订阅在暂停时接收事件,它们将被缓冲直到订阅恢复。

this paragraph 中所述,避免缓冲事件的推荐解决方案是取消订阅并在需要时重新启动它。