我的应用程序中有一个向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/