我需要取消流<QuerySnapshot>(颤振)吗



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

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

然后,我创建一个流构建器,如下所示:

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

我想知道我是否需要在包含StreamBuilder小部件的 dispose 方法中分离此流。我对Streams和StreamBuilders了解不多,所以我不确定如何做到这一点,但我真的很想避免任何内存泄漏。

你担心这一点是对的,但StreamBuilder会为你做所有繁重的工作,包括订阅和取消订阅,所以你不必担心StreamBuilder如果是唯一听你的Stream的地方。但是,如果您自己听Stream,则必须以StatefulWidgetdispose方法cancel订阅。

如果我错了,有人应该纠正我,但我认为这就是StreamBuilder类的重点:查看源代码,它似乎自然dispose()取消订阅。

相关内容

  • 没有找到相关文章

最新更新