flutter - 停止监听并重新开始监听RxDart中的流

标签 flutter dart stream rxdart

我的应用程序中有一个向BehaviorSubject流添加值的类:

class MyClassA{

    BehaviorSubject<int> _signalSubject = BehaviorSubject();
    Stream<int> get signalStream => _signalSubject.stream;

    //at some other point in the same class i have:
    _signalSubject.add(someIntValue)

}

现在,在我的应用程序的另一个类上,我有:
  class MyClassWidget extends StatefulWidget {
      MyClassWidget();

      @override
      _MyClassWidgetState createState() => _MyClassWidgetState();
    }

    class _MyClassWidgetState extends State<MyClassWidget>{

        MyClassA classA = MyClassA();
        ... etc

        @override
        void initState() {
        super.initState();

        classA.signalStream
            .listen((signal) => print("Signal received $signal"));

    });
  }

 }

是否可以在特定条件下停止收听signalStream并在其他条件下重新开始收听?

该流具有.takeUntil属性,据我了解,该属性可用于停止监听,但是如何重新开始监听?

最佳答案

https://api.flutter.dev/flutter/dart-async/StreamSubscription-class.html中,您可以看到您具有StreamSubscription对象的暂停和恢复方法。


暂停([ future 简历信号])→无效

请求流暂停事件,直到进一步通知为止。

resume()→无效

暂停后恢复。


也来自https://api.flutter.dev/flutter/dart-async/Stream-class.html:

“您在流上进行侦听以使其开始生成事件,并设置接收事件的侦听器。侦听时,您将收到一个StreamSubscription对象,该对象是提供事件的 Activity 对象,可用于再次停止侦听,或暂时暂停订阅中的事件。”

因此,当您开始侦听流时,它将返回一个StreamSubscription对象。通过使用它,您可以在需要时暂停和恢复它。

关于flutter - 停止监听并重新开始监听RxDart中的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60546298/

相关文章:

firebase - 完成错误 : Gradle task assembleDebug failed with exit code 1

widget - Flutter Row 在构建时消失了吗?

dart - Flutter函数参数通过引用传递

python - 使用 Twisted 或使用线程、Python 中的队列处理大量流数据

scala - Scala 中的流

java - 从 InputStream 或 Reader 读取长度为 n 的字符串

flutter - 父类(super class) 'Bloc<xxx, xxx>' 在 dart 中没有零参数构造函数

flutter - 如何在父/根窗口小部件中初始化数据模型错误:只能在初始化程序中访问静态成员

dart - 文档:单击不起作用

flutter - Flutter中的自定义按钮