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 [...]"
- StreamSubscription
有cancel()
方法(和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 - 关闭流的主要内容,如果未能解决你的问题,请参考以下文章
无法从 StreamBuilder (Flutter) 查询子集合