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
Dart/WebStorm“取消Dart.async.StreamSubscription的实例”_Dart_Webstorm - Fatal编程技术网

Dart/WebStorm“取消Dart.async.StreamSubscription的实例”

Dart/WebStorm“取消Dart.async.StreamSubscription的实例”,dart,webstorm,Dart,Webstorm,我正在使用WinStorm 2018.2.5注册版,带有Dart插件 编辑简单代码时,编辑器会向我显示一条消息: 取消dart.async.StreamSubscription的实例 我不明白这个消息的意思。我看不出代码有什么问题。如果我运行代码检查,结果是:没有发现可疑代码 有什么想法吗 注: const int eventsCount = 5; const int waitBetweenTwoEvents = 1; typedef Streamer = Stream<int>

我正在使用WinStorm 2018.2.5注册版,带有Dart插件

编辑简单代码时,编辑器会向我显示一条消息:

取消dart.async.StreamSubscription的实例

我不明白这个消息的意思。我看不出代码有什么问题。如果我运行代码检查,结果是:没有发现可疑代码

有什么想法吗

注:

const int eventsCount = 5;
const int waitBetweenTwoEvents = 1;

typedef Streamer = Stream<int> Function();

...

Streamer streamCreator = () async* {
  for(int i=0; i<eventsCount; i++) {
    yield i;
    sleep(Duration(seconds: waitBetweenTwoEvents));
  }
};

当您在analysis_options.yaml中启用了linter规则时,将显示此信息

或者

添加订阅。取消该类中的某个位置。 取下过梁尺 添加注释//忽略:取消\在显示警告的行之前或末尾添加注释 为\u文件添加注释//忽略\u:取消文件中某处的\u订阅
当您在analysis_options.yaml中启用了linter规则时,将显示此信息

或者

添加订阅。取消该类中的某个位置。 取下过梁尺 添加注释//忽略:取消\在显示警告的行之前或末尾添加注释 为\u文件添加注释//忽略\u:取消文件中某处的\u订阅
正如其他人指出的,您有一个lint要求您取消订阅

在这种情况下,我根本不会创建订阅。当您希望通过提前暂停或取消流或处理错误来控制流时,流订阅非常有用。
在这里,您只需要对每个数据事件执行一些操作。这就是这个方法的作用。它甚至在流完成或出错时返回一个已完成的未来,因此您不需要进行订阅。作为未来。

正如其他人指出的,您有一个lint要求您取消订阅

在这种情况下,我根本不会创建订阅。当您希望通过提前暂停或取消流或处理错误来控制流时,流订阅非常有用。
在这里,您只需要对每个数据事件执行一些操作。这就是这个方法的作用。它甚至会在流完成或出错时返回一个已完成的未来,因此您无需订阅。asFuture.

非常感谢。我不确定,但我认为应该取消流订阅,以便让解释器进行一些清理:流可能需要关闭事件源,并在取消订阅后进行清理。返回在流完成清理后完成的未来。这就是为什么存在linter规则,但linter规则不理解您的程序。例如,您可能会将对订阅的引用传递到其他地方以在那里取消,而linter规则将无法遵循该逻辑。您可能还希望在流本身关闭之前使用所有事件,并且不打算取消订阅。非常感谢。我不确定,但我认为应该取消流订阅,以便让解释器进行一些清理:流可能需要关闭事件源,并在取消订阅后进行清理。返回在流完成清理后完成的未来。这就是为什么存在linter规则,但linter规则不理解您的程序。例如,您可能会将对订阅的引用传递到其他地方以在那里取消,而linter规则将无法遵循该逻辑。您可能还希望在流本身关闭之前使用所有事件,并且不打算取消订阅。是的,我同意。然而,我正在学习Dart,我尝试了很多东西来测试我的理解力。这个代码只是一个实验。是的,我同意。然而,我正在学习Dart,我尝试了很多东西来测试我的理解力。这段代码只是一个实验。
linter:
  rules:
    - cancel_subscriptions