目次

cancel_subscriptions

dart:asyncStreamSubscription のインスタンスをキャンセルします。

このルールは、Dart 2.0から利用可能です。

詳細

#

必ずdart:asyncStreamSubscription のインスタンスに対して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

analysis_options.yaml
yaml
linter:
  rules:
    - cancel_subscriptions