微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 MobX 和 Flutter 中观察子商店中的父商店属性

如何解决如何在 MobX 和 Flutter 中观察子商店中的父商店属性

我想使用 MobX 在 Flutter 应用程序中实现用户编辑表单。我有用户存储,它是中央共享存储 (_userStore)。我不想放置仅在用户编辑页面中使用的验证器。我想为用户编辑页面 (_editPageStore) 设置有错误的专用商店。但是我找不到如何对用户存储更改进行反应的方法。我的代码看起来像这样:

编辑用户页面表单域:

 Observer(builder: (_) => TextFormField(
                initialValue: _userStore.user.name,decoration: Inputdecoration(
                    labelText: 'Name',errorText: _editPageStore.nameError)
                onChanged: (value) => _userStore.user.name = value,)),

编辑用户页面存储: 抽象类 _UserDetailsEditFormController 与 Store { 最终_userConroller = GetIt.instance();

List<Reactiondisposer> _disposers;

void setupValidations() {
    var name = Observable(_userConroller.user.name); <------ question is here
    _disposers = [
      reaction((_) => name.value,validateName),];
  }

  @observable
  String nameError;

  @action
  validateName(String value) {
    if (value.isEmpty) {
      nameError = AppLocalizations.translate(
          RootRoutes.userDetailsEdit,'form_displayName_validation_empty_text');
      return;
    }
    nameError = null;
  }

  void dispose() {
    for (final d in _disposers) {
      d();
    }
  }
}

如您所见,我正在尝试将用户名包装为 observable,但它创建了新的 observable,该新 observable 不会对用户存储更改做出反应,而且我不包装它根本无法观察。

所以问题是:我如何观察父存储变量。

我也尝试直接观察 name 和 object - 没有任何触发反应:

final _userConroller = GetIt.instance<UserController>();
List<Reactiondisposer> _disposers;

void setupValidations() {
    _disposers = [
         reaction((_) => _userConroller.user,validateName2),reaction((_) => _userConroller.user.name,];
 }

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。