跳到主要内容

cancel_subscriptions

稳定

取消 dart:async StreamSubscription 的实例。

详情

#

应该dart:async StreamSubscription 的实例上调用 cancel

取消 StreamSubscription 的实例可以防止内存泄漏和意外行为。

错误示例

dart
class A {
  StreamSubscription _subscriptionA; // LINT
  void init(Stream stream) {
    _subscriptionA = stream.listen((_) {});
  }
}

错误示例

dart
void someFunction() {
  StreamSubscription _subscriptionF; // LINT
}

正确示例

dart
class B {
  StreamSubscription _subscriptionB; // OK
  void init(Stream stream) {
    _subscriptionB = stream.listen((_) {});
  }

  void dispose(filename) {
    _subscriptionB.cancel();
  }
}

正确示例

dart
void someFunctionOK() {
  StreamSubscription _subscriptionB; // OK
  _subscriptionB.cancel();
}

已知限制

此规则不跟踪 StreamSubscription 实例化和取消的所有模式。有关更多信息,请参阅 linter#317

启用

#

要启用 cancel_subscriptions 规则,请在您的 analysis_options.yaml 文件中的 linter > rules 下添加 cancel_subscriptions

analysis_options.yaml
yaml
linter:
  rules:
    - cancel_subscriptions

如果您改为使用 YAML 映射语法来配置 linter 规则,请在 linter > rules 下添加 cancel_subscriptions: true

analysis_options.yaml
yaml
linter:
  rules:
    cancel_subscriptions: true