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

时间:2021-04-08 20:00:57

标签: dart

在声明 _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<ReactionDisposer> _disposers 之前为什么此错误会消失?

1 个答案:

答案 0 :(得分:1)

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

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

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