目次

diagnostic_describe_all_properties

デバッグメソッドですべての公開プロパティを参照します。

このルールは Dart 2.3 以降で使用できます。

このルールにはクイックフィックスがあります。

詳細

#

デバッグメソッドの実装ですべての公開プロパティを参照してください。

Diagnosticableの実装者は、実行時のデバッグ機能を向上させるために、debugFillProperties(...)またはdebugDescribeChildren(...)メソッドの実装ですべての公開プロパティを参照する必要があります。

公開プロパティは、次のフィールドとゲッターとして定義されます。

  • パッケージプライベート(例:_で始まる)ではない
  • 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