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