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
在扑动之前,继续讨论集团。我建议你看这个视频。之后,您可以在这个开发页面