dart - 先前添加的流值以返回监听(广播流)

标签 dart

我有一个自定义的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/

相关文章:

animation - setState 不更新 wiget UI

service - 如何在 Flutter 中创建定时服务

dart - 在页面之间切换时抖动的相机框架掉落

flutter - 如何在 Flutter 中的选项卡之间发送数据?

javascript - Dart中的javascript “map”等价是什么?

templates - Dart:WAITING模板完成

android - Flutter:计划通知不起作用

class - 是否可以在 Dart 的类中将方法声明为 final?

flutter - 迭代器当前为空,但为什么呢?

flutter - 在 Flutter 应用程序中托管可执行文件