Flutter:Streambuilder - 关闭流

Posted

技术标签:

【中文标题】Flutter:Streambuilder - 关闭流【英文标题】:Flutter: Streambuilder - Closing of streams 【发布时间】:2019-09-03 20:18:28 【问题描述】:

我正在构建一个应用程序,该应用程序大量使用 streambuilder 从应用程序中的多个页面的 firestore 获取实时数据。

由于没有流关闭/流订阅取消方法,假设当框架释放小部件时流构建器将自动分离监听 Firestore 文档更改是否安全?是否有任何注意事项需要注意。

谢谢。

【问题讨论】:

"As there is no stream close / stream subscription cancellation methods [...]" - StreamSubscriptioncancel()方法(和pause() / resume() Streambuilder streamsubscription 有这些方法吗?我知道它存在于流构建器之外。能否请您详细说明一下。谢谢。 api.dartlang.org/stable/2.2.0/dart-async/… 嗨 Pskink.. 可能我会改写我的问题 - 我们是否需要在使用流生成器时自行关闭流订阅,或者在处理小部件时它会“分离”自己?对不起,如果我的问题不清楚。 你检查过StreamBuilder 来源吗?如果有,还有什么不清楚的地方? 【参考方案1】:

当订阅流的小部件从小部件树中永久删除时,StreamBuilder 会自动关闭其关联的流:

https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/widgets/async.dart#L131

如果主分支的链接有一天不起作用,或者是一个永久示例:

https://github.com/flutter/flutter/blob/2ece1c3a174c3dd7099736f13b4ad16bb9b70c1d/packages/flutter/lib/src/widgets/async.dart#L131

【讨论】:

以上是关于Flutter:Streambuilder - 关闭流的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:Streambuilder - 关闭流

Flutter:StreamBuilder 快照——无数据

Flutter Streambuilder 正在复制项目

无法从 StreamBuilder (Flutter) 查询子集合

在页面 flutter,streambuilder,listview 之间导航时列表视图位置丢失

Flutter 中 StreamBuilder 和流的问题(接收重复数据)