目录
目录

Cancel instances of dart.async.StreamSubscription.

This rule is available as of Dart 2.0.0.

Details

DO invoke cancel on instances of dart.async.StreamSubscription.

Cancelling instances of StreamSubscription prevents memory leaks and unexpected behavior.

BAD:

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

BAD:

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

GOOD:

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

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

GOOD:

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

Known limitations

This rule does not track all patterns of StreamSubscription instantiations and cancellations. See linter#317 for more information.

Usage

To enable the cancel_subscriptions rule, add cancel_subscriptions under linter > rules in your analysis_options.yaml file:

linter:
  rules:
    - cancel_subscriptions