diagnostic_describe_all_properties
在除錯方法中引用所有公共屬性。
詳情
#在 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