メインコンテンツにスキップ

cancel_subscriptions

安定版

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

詳細

#

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
yaml
linter:
  rules:
    - cancel_subscriptions

代わりに YAML マップ構文を使用して linter ルールを設定している場合は、linter > rules の下に cancel_subscriptions: true を追加してください。

analysis_options.yaml
yaml
linter:
  rules:
    cancel_subscriptions: true