【发布时间】:2020-07-19 02:15:42
【问题描述】:
希望你们都做得很好,#stayhome 并保持#socialdistancing :)
flutter_bloc 库确实有一个小问题,希望有人能帮助我。
我有一个 API-Call (moviesStream),它返回一个流。
我想要的是:在该流中的每个yield 上,在我的bloc 中执行yield,因此每个项目都重建我的小部件,而不是在最后为所有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)
【问题讨论】:
标签: flutter dart stream bloc flutter-bloc