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

インスタンス_メンバー_静的メソッドからの_アクセス

静的メソッドからインスタンスメンバーにアクセスすることはできません。

説明

#

静的メソッド内にインスタンスメンバーへの修飾されていない参照が含まれている場合、アナライザーはこの診断を生成します。

#

以下のコードは、静的メソッドでインスタンスフィールド x が参照されているため、この診断を生成します。

dart
class C {
  int x = 0;

  static int m() {
    return x;
  }
}

一般的な修正

#

メソッドがインスタンスメンバーを参照する必要がある場合は、そのメソッドは静的にすることはできません。そのため、static キーワードを削除してください。

dart
class C {
  int x = 0;

  int m() {
    return x;
  }
}

メソッドをインスタンスメソッドにできない場合は、クラスのインスタンスを渡せるようにパラメータを追加してください。

dart
class C {
  int x = 0;

  static int m(C c) {
    return c.x;
  }
}