Skip to main content

close_sinks

Learn about the close_sinks linter rule.

Stable

Close instances of dart:core Sink.

Details

#

DO invoke close on instances of dart:core Sink.

Closing instances of Sink prevents memory leaks and unexpected behavior.

BAD:

dart
class A {  IOSink _sinkA;  void init(filename) {  _sinkA = File(filename).openWrite(); // LINT  } } 

BAD:

dart
void someFunction() {  IOSink _sinkF; // LINT } 

GOOD:

dart
class B {  IOSink _sinkB;  void init(filename) {  _sinkB = File(filename).openWrite(); // OK  }   void dispose(filename) {  _sinkB.close();  } } 

GOOD:

dart
void someFunctionOK() {  IOSink _sinkFOK; // OK  _sinkFOK.close(); } 

Known limitations

This rule does not track all patterns of Sink instantiations and closures. See sdk#57882 for more information.

Enable

#

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

analysis_options.yaml
yaml
linter:  rules:  - close_sinks 

If you're instead using the YAML map syntax to configure linter rules, add close_sinks: true under linter > rules:

analysis_options.yaml
yaml
linter:  rules:  close_sinks: true