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 映射语法来配置 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。 查看源代码 或 报告问题。