目錄

diagnostic_describe_all_properties

在除錯方法中參考所有公開屬性。

此規則在 Dart 2.3 或更新版本中提供。

此規則提供快速修正

詳細資訊

#

debug 方法實作中參考所有公開屬性。

Diagnosticable 的實作者應在 debugFillProperties(...)debugDescribeChildren(...) 方法實作中參考所有公開屬性,以改善執行時的除錯能力。

公開屬性定義為欄位和 getter,它們是

  • 非套件私有(例如,以 _ 為前綴)
  • static 或覆寫
  • 本身不是 WidgetWidget 的集合

此外,Flutter 中會特別處理「debug」前綴的屬性。為了診斷目的,屬性 foo 和帶前綴的屬性 debugFoo 被視為有效地描述相同的屬性,並且參考其中一個就足夠了。

錯誤範例

dart
class Absorber extends Widget {
  bool get absorbing => _absorbing;
  bool _absorbing;
  bool get ignoringSemantics => _ignoringSemantics;
  bool _ignoringSemantics;
  @override
  void debugFillProperties(DiagnosticPropertiesBuilder properties) {
    super.debugFillProperties(properties);
    properties.add(DiagnosticsProperty<bool>('absorbing', absorbing));
    // Missing reference to ignoringSemantics
  }
}

正確範例

dart
class Absorber extends Widget {
  bool get absorbing => _absorbing;
  bool _absorbing;
  bool get ignoringSemantics => _ignoringSemantics;
  bool _ignoringSemantics;
  @override
  void debugFillProperties(DiagnosticPropertiesBuilder properties) {
    super.debugFillProperties(properties);
    properties.add(DiagnosticsProperty<bool>('absorbing', absorbing));
    properties.add(DiagnosticsProperty<bool>('ignoringSemantics', ignoringSemantics));
  }
}

用法

#

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

analysis_options.yaml
yaml
linter:
  rules:
    - diagnostic_describe_all_properties