Dart 依赖项注入 - 为什么不能将实例引用传递给类成员?



我目前正在使用 Flutter 编写一个应用程序,并开始使用 MobX 重构我的状态管理。由于我有几个商店可以相互通信,因此我尝试按照 MobX 最佳实践中的建议"连接"这些商店:https://mobx.js.org/best/store.html#combining-multiple-stores。

创建一个"根"存储,该存储将其他存储作为成员保存,每个存储都包含对根存储的引用。

由于某种原因,我无法做这件看似简单的事情。我搜索了很多,但找不到答案。

这基本上是我想做的:

class StoreA {
final Root _root;
StoreA(this._root);
}
class root {
final StoreA = StoreA(this);
}

飞镖分析仪抱怨:

对"this"表达式的引用无效

不能在初始值设定项中使用this,但如果删除final限定符,则可以在构造函数中使用它。

class Root {
StoreA storeA;
Root() {
storeA = StoreA(this);
}
}

Richard Heap 的答案目前是正确的答案,但在包含不可为空类型系统的 Dart 的未来版本中,您将能够编写以下内容:

class StoreA {
final Root _root;
StoreA(this._root);
}
class root {
late final StoreA = StoreA(this);
}

您可以在 Dart 语言存储库中查看默认不可为空 (NNBD( 的规范以及相关功能(如late字段(。

最新更新