メインコンテンツにスキップ

diagnostic_describe_all_properties

安定版
修正が利用可能です

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

詳細

#

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

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

代わりに YAML マップ構文を使用してリンター ルールを構成している場合は、linter > rules の下に diagnostic_describe_all_properties: true を追加します。

analysis_options.yaml
yaml
linter:
  rules:
    diagnostic_describe_all_properties: true