我正在 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
,则必须以StatefulWidget
dispose
方法cancel
订阅。
如果我错了,有人应该纠正我,但我认为这就是StreamBuilder
类的重点:查看源代码,它似乎自然dispose()
取消订阅。