我有一个习惯StreamController<int>:
final StreamController listener = StreamController<int>.broadcast();
Run Code Online (Sandbox Code Playgroud)
初始化后,我向流发出一个值
listener.add(7);
Run Code Online (Sandbox Code Playgroud)
发出值后,我设置了一个Stream侦听器
listener.stream.listen((val) {
print(val);
});
Run Code Online (Sandbox Code Playgroud)
预期的行为是侦听器将返回之前设置的值,但事实并非如此。只有在设置监听器之后设置该值,监听器才会被调用。
我怎样才能实现这种行为?
(编辑:必须支持多个侦听器)
首先,不要创建广播流Stream,因为这种流的定义是允许多个订阅者,但如果没有当前订阅者,所有事件都将丢失。
然后,查看从 .asBroadcastStream返回Stream的StreamController. 此方法允许实现在第一个订阅者之后首先侦听流的逻辑,并且还可以在没有更多订阅者时进行诸如暂停流之类的逻辑。
| 归档时间: |
|
| 查看次数: |
2073 次 |
| 最近记录: |