【发布时间】:2021-11-16 18:09:36
【问题描述】:
有什么方法可以检查 Dart/Flutter 中是否有任何活动的 Stream 已经被监听过?
假设在一个屏幕上已经收听了一个 Stream。但是,我需要在另一个屏幕上收听该流。所以我需要检查是否有任何活动流已经被收听。
【问题讨论】:
-
您可以声明一个布尔值,如果正在收听流,则使其为真。然后将其传递给其他屏幕进行检查。
有什么方法可以检查 Dart/Flutter 中是否有任何活动的 Stream 已经被监听过?
假设在一个屏幕上已经收听了一个 Stream。但是,我需要在另一个屏幕上收听该流。所以我需要检查是否有任何活动流已经被收听。
【问题讨论】:
您必须使用StreamController 来检查流是否已经被收听,使用StreamController 的方便hasListener getter。
下面是要理解的最少示例代码:
StreamController controller = StreamController();
controller.addStream(getNumbersAsStream());
controller.stream.listen((e) => print(e));
if (!controller.hasListener) {
controller.stream.listen((e) => print(e));
} else {
print("Stream has already been listened");
}
【讨论】: