我目前正在使用 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
字段(。