Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 我是否需要取消没有';不给变量赋值?_Asynchronous_Dart_Stream - Fatal编程技术网

Asynchronous 我是否需要取消没有';不给变量赋值?

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) {}); 如果

这里有两种不同的方式,我可以听流。最上面的一个没有关于取消订阅的IDE警告。最下面的那个有

// 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中的实现是安全的。