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