extension_declares_instance_field
拡張機能はインスタンスフィールドを宣言できません。
説明
#インスタンスフィールドの宣言が拡張機能内で見つかると、アナライザーはこの診断を生成します。拡張機能は状態ではなく、動作のみを追加できるため、インスタンスフィールドを定義することはできません。
例
#次のコードは、s がインスタンスフィールドであるため、この診断を生成します。
dart
extension E on String {
String s;
}一般的な修正
#値をフィールドに保存せずに計算できる場合は、ゲッターまたはメソッドの使用を検討してください。
dart
extension E on String {
String get s => '';
void s(String value) => print(s);
}値を保存する必要があるが、すべてのインスタンスで同じである場合は、静的フィールドの使用を検討してください。
dart
extension E on String {
static String s = '';
}各インスタンスが独自の値を保存する必要がある場合は、静的 Expando をバックエンドとするゲッターとセッターのペアの使用を検討してください。
dart
extension E on SomeType {
static final _s = Expando<String>();
String get s => _s[this] ?? '';
set s(String value) => _s[this] = value;
}