Dart 实例成员';名称';can';不能在初始值设定项中访问

Dart 实例成员';名称';can';不能在初始值设定项中访问,dart,Dart,当声明\u disposers变量时,我得到了错误 无法在初始值设定项中访问实例成员“name” class FormStore=\u FormStore与$FormStore; 抽象类_FormStore与Store{ @可观察 字符串名=“”; 列表_处理器=[ 反应((\u)=>name,validateUsername),//name和validateUsername出现错误 ]; // ... 它提示 尝试将对实例成员的引用替换为其他引用 表情 为什么会出现错误?如果将延迟放在列表处

当声明
\u disposers
变量时,我得到了错误

无法在初始值设定项中访问实例成员“name”

class FormStore=\u FormStore与$FormStore;
抽象类_FormStore与Store{
@可观察
字符串名=“”;
列表_处理器=[
反应((\u)=>name,validateUsername),//name和validateUsername出现错误
];
// ...
它提示

尝试将对实例成员的引用替换为其他引用 表情


为什么会出现错误?如果将
延迟
放在
列表处理程序
之前,为什么会消除此错误?

您不能使用其他实例成员(如
名称
)初始化像
\u处理程序
这样的实例成员,因为dart不允许您在初始化程序中使用对“this”的引用

当您使用
late
时,它将变为惰性,这意味着它将仅在需要时(通常在您调用它时)进行初始化/计算

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
  ];

  // ...