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