Asynchronous 我是否需要取消没有';不给变量赋值?
这里有两种不同的方式,我可以听流。最上面的一个没有关于取消订阅的IDE警告。最下面的那个有Asynchronous 我是否需要取消没有';不给变量赋值?,asynchronous,dart,stream,Asynchronous,Dart,Stream,这里有两种不同的方式,我可以听流。最上面的一个没有关于取消订阅的IDE警告。最下面的那个有 // No IDE warning about cancelling subscription _loginBloc.state.listen((state) {}); // "Cancel instances of dart.async.StreamSubscription" StreamSubscription s = _loginBloc.state.listen((state) {}); 如果
// No IDE warning about cancelling subscription
_loginBloc.state.listen((state) {});
// "Cancel instances of dart.async.StreamSubscription"
StreamSubscription s = _loginBloc.state.listen((state) {});
如果我使用第一种方法,我是否需要以某种方式取消订阅,或者它将自行处理?这两种方法之间没有行为差异。您正在运行到的限制为。那个lint有很多误报和漏报 通常,如果您不使用从
listen
返回的StreamSubscription
,则应改用
如果您知道,
流
将在正在侦听的内容不再关心它之前结束,则无需显式取消。您需要确保取消的地方是,如果有一个时间点,侦听器不再关心结果,比如说,因为它是一个不再显示的小部件。我找不到一个参考说明,如果您知道流将在侦听器需要取消之前结束,那么您不需要取消。你在哪里读到的?流可以在“完成”上执行与在“取消”上相同的清理-它知道不会有更多的事件发生。当然,即使存在“完成”或“取消”,流也可能泄漏内存,但SDK中的实现是安全的。