我想取消一个流,发现aStream不能取消,但是aStreamSubsciption可以取消。Stream对象有一个listen()方法
添加对此流的订阅。
订阅到底是什么?我该如何使用它StreamBuilder?
来自文档:
对来自流的事件的订阅。当您使用 Stream.listen 监听 Stream 时,会返回 StreamSubscription 对象。订阅向侦听器提供事件,并保存用于处理事件的回调。订阅还可用于取消订阅事件,或暂时暂停流中的事件。
据我了解,我认为我可以使用它event并用它来重建我的小部件。这是正确的做法吗?或者有更正确的方法吗?
如果您使用的是StreamBuilder,流订阅和流取消由框架管理。builder当新快照可用时将调用该方法,并且当小部件被销毁时,流订阅将被取消。
正如您所写,您可以创建自己的StreamSubscriptionwithlisten()方法,在这种情况下,您必须在不再需要时取消此订阅,例如在重写的dispose方法中。为此,请跟踪变量或成员中的订阅,假设stream变量中有一个流并且MyType是流返回的类:
StreamSubscription<MyType> myStreamSubscription = stream.listen((value) {
// add code here
});
Run Code Online (Sandbox Code Playgroud)
然后您可以使用它来管理流:
myStreamSubscription.pause();
myStreamSubscription.resume();
myStreamSubscription.cancel();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4030 次 |
| 最近记录: |