diagnostic_describe_all_properties
DO reference all public properties in debug methods.
詳細資訊
#DO 在 debug
方法實作中參考所有公開屬性。
Diagnosticable
的實作者應在 debugFillProperties(...)
或 debugDescribeChildren(...)
方法實作中參考所有公開屬性,以提升運行時的可除錯性。
公開屬性定義為以下欄位和 getter:
- 非套件私有 (例如,不以
_
為前綴) - 非
static
或覆寫 - 本身不是
Widget
或Widget
的集合
此外,對於 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
除非另有說明,否則本網站上的文件反映 Dart 3.7.1 版本。頁面上次更新於 2025-03-07。 檢視原始碼 或 回報問題。