目录
目录

Close instances of dart.core.Sink.

This rule is available as of Dart 2.0.0.

Details

DO invoke close on instances of dart.core.Sink.

Closing instances of Sink prevents memory leaks and unexpected behavior.

BAD:

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

BAD:

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

GOOD:

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

  void dispose(filename) {
    _sinkB.close();
  }
}

GOOD:

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

Known limitations

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

Usage

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

linter:
  rules:
    - close_sinks