Flutter 展平多个流,仅包含最后一个流的事件
Flutter 展平多个流,仅包含最后一个流的事件,flutter,reactive-programming,reactivex,rxdart,Flutter,Reactive Programming,Reactivex,Rxdart,x是一个流。在每个事件上,我生成一个流xi,它本身会生成事件。从这个设置中,我想生成一个平坦的输出流,它只包含最近的x_I事件,直到x结束: x: ├─┬───┬─────┬────────┤ x_3: │ │ └─E────H───I─... x_2: │ └─B───D────G───────... x_1: └─A─────C────F─────────... 预期的结果是 ├───A───B───D─E────H─┤ 我不能在x上使用,因为这
x
是一个流。在每个事件上,我生成一个流xi
,它本身会生成事件。从这个设置中,我想生成一个平坦的输出流,它只包含最近的x_I
事件,直到x
结束:
x: ├─┬───┬─────┬────────┤
x_3: │ │ └─E────H───I─...
x_2: │ └─B───D────G───────...
x_1: └─A─────C────F─────────...
预期的结果是
├───A───B───D─E────H─┤
我不能在x
上使用,因为这样所有xi
事件都会合并到输出流中,而不仅仅是最近的子流
我也不能使用,因为xi
是无限的,并且输出流实际上是x1
在我看来,这似乎是一个相当常见的场景,因此我的问题是:这是否可能使用标准RxDart(我正在使用),或者我需要自己实现它吗?您正在寻找的是RxDart的
swtichLatest
操作符
您要找的是rxdart的
swtichLatest
操作员
这就是
flatMap
所做的。我不能使用它,因为这样所有xi
中的所有事件都会在输出流中结束,而不仅仅是最近xi
中的事件,请参见“预期结果”。难道你不能将流传输到take
或first
?我不知道如何:我想观察xi
中的所有事件,直到x_(i+1)
已创建。事件的数量预先未知。谢谢–当我查看文档时,不应该停止滚动…这正是我所寻找的!也作为包中的switchLatest
实现:stream\u transform
作为StreamTransformer
,而不需要对Rx进行完全购买。这就是为什么flatMap
可以。我不能使用此选项,因为这样来自所有x_I
的所有事件都将在输出流中结束,而不仅仅是来自最近的x_I
的事件,请参见“预期结果”。难道你不能直接将你的流传送到take
或first
?我不知道如何:我想观察xi
的所有事件,直到xi(I+1)
已创建。事件的数量事先不知道。谢谢–当我查看文档时,不应该停止滚动…这正是我要找的!在包:stream\u transform
中也实现为switchLatest
,作为StreamTransformer
而不是要求Rx完全接受。