flutter - 来自自己的流的每个项目的颤振块产量
问题描述
希望你们都做得很好,#stayhome 并保持#socialdistancing :)
我确实对flutter_bloc库有一个小问题,我希望有人可以帮助我。
我有一个 API-Call ( moviesStream
),它返回一个流。我想要的是:在yield
该流中的每一个上做一个yield
我的bloc
,因此重建我的每个项目的小部件,而不是最后为所有items
。我想items
一个接一个地建造
这是我的方法,我不明白为什么它不起作用。我非常愿意接受任何其他方法来实现我的目标
到目前为止我学到的东西:我不能产生相同的状态,但我的新旧状态不同,所以这不应该是一个问题(我认为)。屈服后我是否需要调度/添加一个新事件(或同样的事件)?我知道这也许可以解决我的问题,但这会从头开始重新开始我的直播,不是吗?
Stream<FilmeState> mapEventToState(FilmeEvent event) async* {
final currentState = state;
yield FilmeStateUninitialized();
if (event is FilmeEventLoad)
{
yield FilmeStateLoadedV2(items: []);
var moviesStream = Stream.fromIterable([{"1":"1"}, {"2":"2"}, {"3":"3"}]);
await for (var value in moviesStream) {
var newItems = List<Map<String, dynamic>>.from((state as FilmeStateLoadedV2).items);
newItems.add(value);
print("newItems.length=${newItems.length}");
yield FilmeStateLoadedV2(items: newItems);
}
}
输出如下
I/flutter (12087): state=Instance of 'FilmeStateUninitialized' // this comes from my widget (BlocBuilder)
I/flutter (12087): newItems.length=1
I/flutter (12087): newItems.length=2
I/flutter (12087): newItems.length=3
I/flutter (12087): state=Instance of 'FilmeStateLoadedV2' // this comes from my widget (BlocBuilder)
我期待或者更确切地说我希望有以下输出
I/flutter (12087): state=Instance of 'FilmeStateUninitialized' // this comes from my widget (BlocBuilder)
I/flutter (12087): newItems.length=1
I/flutter (12087): state=Instance of 'FilmeStateLoadedV2' // this comes from my widget (BlocBuilder)
I/flutter (12087): newItems.length=2
I/flutter (12087): state=Instance of 'FilmeStateLoadedV2' // this comes from my widget (BlocBuilder)
I/flutter (12087): newItems.length=3
I/flutter (12087): state=Instance of 'FilmeStateLoadedV2' // this comes from my widget (BlocBuilder)
解决方案
我认为发生这种情况是因为您正在使用已经充满数据的流,因此没有时间来传递数据,因此您只能获得最后一个值。
如果要检查,请在屈服状态之前添加以下行。
await Future.delayed(Duration(seconds: 1));
推荐阅读
- label - 使用 LabelMe Dataset 创建 tf.data 进行图像分割
- python - Tkinter 执行命令的顺序与代码中的顺序不同?
- mysql - mysql - 更新连接字符串的每个值
- javascript - 属性或方法“close”未在实例上定义,但在渲染期间被引用。确保此属性是反应性的
- google-apps-script - AppsScript Google Sheets 绑定函数中超出内存限制
- node.js - 在 NodeJs 和 MongoDB 中批量更新
- python - 在 Python 中抓取动态内容
- python - 根据日期范围过滤行。日期格式错误
- file - 如何使用 SharePoint CSOM 加快文件读取速度?
- sql - 我在 postgreSQL 中遇到无法解决的语法错误