我有一个自定义的StreamController<int>
:
final StreamController listener = StreamController<int>.broadcast();
初始化后,我向流发送一个值
listener.add(7);
发出值后,我设置一个
Stream
侦听器listener.stream.listen((val) {
print(val);
});
预期的行为是,侦听器将返回先前设置的值,但是事实并非如此。只有在设置侦听器之后再设置值,才会调用该侦听器。
我该如何实现这种行为?
(编辑:必须支持多个侦听器)
最佳答案
首先,不要将Stream
设为broadcast stream,因为这种流的定义是允许多个订阅者,但是如果没有当前订阅者,所有事件都将丢失。
然后,查看从asBroadcastStream
返回的Stream
上的 StreamController
。此方法允许在第一个用户之后首先侦听Stream的情况下实现逻辑,并且还可以使逻辑(如在没有更多用户的情况下暂停流)成为可能。
关于dart - 先前添加的流值以返回监听(广播流),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62284828/