gol*_*oom 3 memory mobile flutter google-cloud-firestore stream-builder
我正在听 firestore 中的一系列文档(作为聊天应用程序的一部分)。我是通过使用服务来做到这一点的,该服务创建Stream<QuerySnapshot>如下:
_snapshots$ = Firestore.instance.collection('messages').orderBy('date',descending: false).snapshots()
Run Code Online (Sandbox Code Playgroud)
然后我创建一个 StreamBuilder 如下:
return StreamBuilder<List<Message>>(
stream: widget.chatService.messages$,
builder: (context, snapshot) => (snapshot.hasData)
...
Run Code Online (Sandbox Code Playgroud)
我想知道是否需要在包含StreamBuilder小部件的 dispose 方法中分离此流。我对 Streams 和 StreamBuilders 不太了解,所以我不确定如何做到这一点,但我真的想避免任何内存泄漏。
您担心这一点是正确的,但StreamBuilder会为您完成所有繁重的工作,包括订阅和取消订阅,因此您不必担心它是否StreamBuilder是您Stream正在收听的唯一地方。但是,如果您正在聆听Stream自己的声音,那么您将不得不cancel订阅一个StatefulWidget dispose方法。