Flutter Web:StreamBuilder 浏览器调整大小和重建

Posted

技术标签:

【中文标题】Flutter Web:StreamBuilder 浏览器调整大小和重建【英文标题】:Flutter Web: StreamBuilder browser resize & rebuild 【发布时间】:2021-07-21 00:14:00 【问题描述】:

我有一个带有流构建器列表视图的简单主页。我知道颤振会根据设计需要重建/重绘,但这是否意味着 StreamBuilder 将在每次重建时一遍又一遍地获取相同的数据?

我问的原因是每次浏览器调整大小或浏览器从屏幕 1 移动到屏幕 2 时,我都会获得完整的数据重建/刷新(或者从我的控制台日志中看来)。对于具有更大数据集的大型项目,这似乎非常低效/不必要。

我是否应该尝试阻止 streamBuilder 在调整浏览器大小时获得相同的数据?谢谢。

【问题讨论】:

【参考方案1】:

首先,导入这个。

import 'package:async/async.dart';

现在,声明 AsyncMemoizer。

final AsyncMemoizer memoizer = AsyncMemoizer();

在流参数中与 StreamBuilder 小部件一起使用。

stream: memoizer.runOnce(() => YOUR STREAM DATA),

【讨论】:

感谢您的帮助,但这给了我“无法将参数类型 'Future' 分配给参数类型 'Stream'。”这行代码的错误:“流:memoizer.runOnce(() => fsRef.doc(coID).snapshots()),” 可以分享stream方法的sn-p代码吗? 问题解决了吗?

以上是关于Flutter Web:StreamBuilder 浏览器调整大小和重建的主要内容,如果未能解决你的问题,请参考以下文章

Flutter web 无密码登录不会触发身份验证状态更改

FirebaseStorage + Flutter,streamBuilder?

来自一个 StreamBuilder 的 Flutter 快照显示在另一个 StreamBuilder 中

Flutter:Streambuilder - 关闭流

Flutter:StreamBuilder 快照——无数据

Flutter Streambuilder 正在复制项目