跳至主要內容

diagnostic_describe_all_properties

穩定
提供修正

DO reference all public properties in debug methods.

詳細資訊

#

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

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

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

analysis_options.yaml
yaml
linter:
  rules:
    diagnostic_describe_all_properties: true