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

instance_member_access_from_factory

ファクトリコンストラクタからインスタンスメンバーにアクセスすることはできません。

説明

#

ファクトリコンストラクタに、インスタンスメンバーへの修飾されていない参照が含まれている場合に、アナライザはこの診断を生成します。ジェネレーティブコンストラクタでは、クラスのインスタンスはコンストラクタの本体が実行される前に作成および初期化されるため、インスタンスをthisにバインドし、インスタンスメソッドの場合と同様にアクセスできます。しかし、ファクトリコンストラクタでは、本体の実行前にインスタンスが作成されないため、thisを使用して参照することはできません。

#

次のコードは、ファクトリコンストラクタでxがスコープ外にあるため、この診断を生成します。

dart
class C {
  int x;
  factory C() {
    return C._(x);
  }
  C._(this.x);
}

一般的な修正

#

インスタンスメンバーを参照しないようにコードを書き直してください。

dart
class C {
  int x;
  factory C() {
    return C._(0);
  }
  C._(this.x);
}