【问题标题】:The instance member 'name' can't be accessed in an initializer无法在初始化程序中访问实例成员“名称”
【发布时间】:2021-07-04 17:50:03
【问题描述】:

在声明 _disposers 变量时出现错误。

无法在初始化程序中访问实例成员“name”。

class FormStore = _FormStore with _$FormStore;

abstract class _FormStore with Store {

  @observable
  String name = '';

  List<ReactionDisposer> _disposers = [
    reaction((_) => name, validateUsername), // error on name and on validateUsername
  ];

  // ...

提示

尝试用不同的替换对实例成员的引用 表达

如果将late 放在List&lt;ReactionDisposer&gt; _disposers 之前,为什么会出现错误以及为什么此错误会消失?

【问题讨论】:

    标签: dart


    【解决方案1】:

    您不能使用其他实例成员(例如 name)来初始化像 _disposers 这样的实例成员,因为 dart 不允许您在初始化程序中使用对“this”的引用。

    https://dart.dev/tools/diagnostic-messages#implicit_this_reference_in_initializer

    当您使用late 时,它会变得懒惰,这意味着它只会在需要时(通常在您调用它时)进行初始化/评估。

    【讨论】:

      猜你喜欢
      • 2020-12-12
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 2022-01-15
      相关资源
      最近更新 更多