我想了解流如何在 flutter 中与 bloc 模式一起工作?
I want to understand how streams work with bloc pattern in flutter?
emit.forEach()
是做什么的?据我了解,它需要一个流,但是 ui rebuild 本身如何以及 onData
参数是什么?我想 return 客户端矩阵 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
在 docs 中的作用:
Subscribes to the provided stream and invokes the onData callback when
the stream emits new data and the result of onData is emitted.
基本上,它与 List 的 .map()
方法相同。列表中的每个数据(元素)都将转换为另一个值。例如:对象到字符串
emit.forEach
有两个值:它必须监听的流和 onData
函数。它将侦听流发出的所有值并将它们转换为另一个值(在本例中为 MatrixSuccuClientState
)。
将 onData: (value2)
中的 value2
视为列表中的 "element[index]
"。 value2
是流的当前发射值。我想你要找的是:
onData: (currentlyEmittedValue) => MatrixSuccuClientState(rooms: currentlyEmittedValue.rooms),
我建议在继续讨论 bloc 之前了解 Streams
in flutter。我建议看这个 video. After that, you could learn how bloc works in this dev page
emit.forEach()
是做什么的?据我了解,它需要一个流,但是 ui rebuild 本身如何以及 onData
参数是什么?我想 return 客户端矩阵 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
在 docs 中的作用:
Subscribes to the provided stream and invokes the onData callback when the stream emits new data and the result of onData is emitted.
基本上,它与 List 的 .map()
方法相同。列表中的每个数据(元素)都将转换为另一个值。例如:对象到字符串
emit.forEach
有两个值:它必须监听的流和 onData
函数。它将侦听流发出的所有值并将它们转换为另一个值(在本例中为 MatrixSuccuClientState
)。
将 onData: (value2)
中的 value2
视为列表中的 "element[index]
"。 value2
是流的当前发射值。我想你要找的是:
onData: (currentlyEmittedValue) => MatrixSuccuClientState(rooms: currentlyEmittedValue.rooms),
我建议在继续讨论 bloc 之前了解 Streams
in flutter。我建议看这个 video. After that, you could learn how bloc works in this dev page