我想了解在颤振中流是如何与块模式一起工作的?



emit.forEach()做什么?据我所知,它需要一个流,但ui如何重建自己,什么是onData参数?我想返回一个客户端矩阵sdk的数据流

on<StartMatrixEventSubmitted>((event, emit) async {
emit(MatrixLoadingState());
await repo.getAllRooms().then((value) async {
await emit.forEach(
value.onSync.stream,
onData: (value2) {
print('data');
return MatrixSuccuClientState(rooms: value.rooms);
},
);
this.myRooms = value.rooms;
emit(MatrixClientSynced());
});
});

以下是emit.forEach在文档中的描述:

订阅所提供的流并调用onData回调流发出新数据,并发出onData的结果。

基本上,它与List的.map()方法相同。列表中的每个数据(元素)都将被转换为另一个值。例如:Object to String

emit.forEach接受两个值:它必须侦听的流和onData函数。它将监听流发出的所有值并将它们转换为另一个值(在本例中为MatrixSuccuClientState)。把onData: (value2)中的value2看作是"列表中的element[index]value2是流当前发出的值。我想你要找的是:

onData: (currentlyEmittedValue) => MatrixSuccuClientState(rooms: currentlyEmittedValue.rooms),

我建议了解Streams在扑动之前,继续讨论集团。我建议你看这个视频。之后,您可以在这个开发页面

中了解bloc的工作原理。

最新更新