跳到主要内容

diagnostic_describe_all_properties

稳定
修复可用

在调试方法中引用所有公共属性。

详情

#

务必debug 方法实现中引用所有公共属性。

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 映射语法来配置 linter 规则,请在 linter > rules 下添加 diagnostic_describe_all_properties: true

analysis_options.yaml
yaml
linter:
  rules:
    diagnostic_describe_all_properties: true