跳到主要內容

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);
}