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完全接受。