停止收听并重新开始收听 RxDart 中的流
Stop listening and restart listening to a stream in RxDart
我的应用程序中有一个 class 正在向 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 上,我有:
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 对象的 pause 和 resume 方法。
”
暂停([未来的恢复信号])→无效
请求流暂停事件,直至另行通知。
恢复()→无效
暂停后继续。
“
也来自https://api.flutter.dev/flutter/dart-async/Stream-class.html:
" 您监听流以使其开始生成事件,并设置接收事件的监听器。当您监听时,您会收到一个 StreamSubscription 对象,它是提供事件的活动对象,并且可以是用于再次停止收听,或暂时暂停来自订阅的事件。"
所以当你开始收听流时,它 returns 一个 StreamSubscription 对象。通过使用它,您可以在需要时暂停和恢复它。
我的应用程序中有一个 class 正在向 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 上,我有:
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 对象的 pause 和 resume 方法。
” 暂停([未来的恢复信号])→无效
请求流暂停事件,直至另行通知。
恢复()→无效
暂停后继续。 “
也来自https://api.flutter.dev/flutter/dart-async/Stream-class.html:
" 您监听流以使其开始生成事件,并设置接收事件的监听器。当您监听时,您会收到一个 StreamSubscription 对象,它是提供事件的活动对象,并且可以是用于再次停止收听,或暂时暂停来自订阅的事件。"
所以当你开始收听流时,它 returns 一个 StreamSubscription 对象。通过使用它,您可以在需要时暂停和恢复它。