Skip to content

Files

Latest commit

 

History

History
50 lines (40 loc) · 955 Bytes

cancel_subscriptions.md

File metadata and controls

50 lines (40 loc) · 955 Bytes

Pattern: Missing use of cancel for dart.async.StreamSubscription

Issue: -

Description

Canceling instances of StreamSubscription prevents memory leaks and unexpected behavior.

Example of incorrect code:

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

Example of incorrect code:

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

Example of correct code:

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

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

Example of correct code:

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

Further Reading