Pattern: Missing use of cancel
for dart.async.StreamSubscription
Issue: -
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();
}