如何解决为什么Flutter Firestore插件不担心关闭其接收器快照流?
在Flutter Firestore代码库中,您可以找到a comment about在查询上运行快照(snapshots)时创建的流。
// It's fine to let the StreamController be garbage collected once all the
// subscribers have cancelled; this analyzer warning is safe to ignore.
StreamController<QuerySnapshotPlatform> controller; // ignore: close_sinks
我想用BehaviorSubject包装我生成的快照流,以便跟踪最新条目。当我有一个流位于页面顶部时,我想通过树中更下方的不同小部件来使用它,而不必每次都重新加载流时,这很有用。如果新的小部件开始监听该流,则无法在BehaviorSubject或其他地方进行跟踪,因为它错过了该事件,因此无法从Firestore获取最新信息。
我是否也不必担心要关闭要创建的行为主题,因为当没有更多的侦听器时,它将被垃圾回收?还是有另一种方式来实现我想要的?
我正在绘制这样的代码:
final snapshotStream = _firestore.collection('users').snapshots();
final behaviorSubjectStream = BehaviorSubject();
behaviorSubjectStream.addStream(snapshotStream);
return behaviorSubjectStream;
这将导致我没有关闭behaviorSubjectStream。可以忽略吗?
解决方法
这取决于您对主题的聆听方式。
根据您的描述,可以忽略提示。当取消订阅该主题的订阅时,该主题也将被取消(当垃圾回收器找到它时)。
在某些情况下,您的订阅仍在收听,但您希望主题停止发出。在这种情况下,您将需要close()
主题。
您可以通过添加来测试是否正确取消了主题
behaviorSubjectStream.onCancel = () {
print("onCancel");
};
然后您可以通过玩应用进行测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。