是否需要取消 Stream<QuerySnapshot> (flutter)

Do I need to cancel Stream<QuerySnapshot> (flutter)

我正在收听 firestore 中的一组文档(作为聊天应用程序的一部分)。我通过使用一个服务来做到这一点,它创建了一个 Stream<QuerySnapshot> 如下:

_snapshots$ = Firestore.instance.collection('messages').orderBy('date',descending: false).snapshots()

然后我创建一个 StreamBuilder 如下:

return StreamBuilder<List<Message>>(
        stream: widget.chatService.messages$,
        builder: (context, snapshot) => (snapshot.hasData)
...

我想知道是否需要在包含 StreamBuilder 小部件的处置方法中分离此流。我不太了解 Streams 和 StreamBuilders,所以我不确定该怎么做,但我真的想避免任何内存泄漏。

你担心这个是对的,但是 StreamBuilder 会为你完成所有繁重的工作,包括订阅和取消订阅,所以你不必担心 如果 StreamBuilder 是唯一可以听到您的 Stream 的地方。 但是如果您自己正在收听 Stream,那么您将不得不 cancel订阅 StatefulWidget dispose 方法。

如果我错了,应该有人纠正我,但我认为这就是 StreamBuilder class 的重点:Looking at the source code,它似乎在 dispose() 上取消订阅顺其自然。