跳到主要内容

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