跳到主要內容

cancel_subscriptions

穩定

取消 dart:async StreamSubscription 的實例。

詳細資訊

#

務必dart:async StreamSubscription 的實例上調用 cancel

取消 StreamSubscription 的實例可以防止記憶體洩漏和意外行為。

不良範例

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

不良範例

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

良好範例

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

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

良好範例

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

已知限制

此規則不會追蹤 StreamSubscription 實例化和取消的所有模式。請參閱 linter#317 以取得更多資訊。

啟用

#

若要啟用 cancel_subscriptions 規則,請在您的 analysis_options.yaml 檔案中的 linter > rules 下新增 cancel_subscriptions

analysis_options.yaml
yaml
linter:
  rules:
    - cancel_subscriptions

如果您改為使用 YAML 地圖語法來配置 linter 規則,請在 linter > rules 下新增 cancel_subscriptions: true

analysis_options.yaml
yaml
linter:
  rules:
    cancel_subscriptions: true