首页 > 解决方案 > Mobx 颤振 observable 没有更新值。每次我得到默认值

问题描述

您好,我是 Flutter 的新手,我正在尝试使用 mobx 状态管理。

import 'package:mobx/mobx.dart';
part 'counter.g.dart';

class Counter = _Counter with _$Counter;

abstract class _Counter with Store {
  @observable
  String hello = 'Hello';

  @action
  void changeName(_name){
    hello = _name;
  }
}

和 .g.dart 也生成了更新的值。我正在触发动作(动作调用部分)

final Counter counter = Counter();

return Observer(builder: (_)=> InkWell(
            onTap: () {
              counter.changeName("updated value");
    }.....something like this.

渲染部分:

final Counter counter = Counter();
 return Scaffold(
      body: Observer(builder: (_) {
        return Container(
          height: 100.0,
          width: 100.0,
          decoration: BoxDecoration(),
          child: Text(counter.hello),
        );
      }),

每次我将 counter.hello 设为“Hello”(默认值)。我没有收到“更新值”

-> Action changeName 正在触发(我已经调试过了)

请帮我。

标签: fluttermobxstate-management

解决方案


这部分

final Counter counter = Counter();

return Observer(builder: (_)=> InkWell(
        onTap: () {
          counter.changeName("updated value");
}

而这部分

final Counter counter = Counter();
 return Scaffold(
  body: Observer(builder: (_) {
    return Container(
      height: 100.0,
      width: 100.0,
      decoration: BoxDecoration(),
      child: Text(counter.hello),
    );
  }),

是否在同一个小部件树中?我注意到在这两个部分中都实例化了 Counter(),要更新文本,您需要使用该类的相同实例。


推荐阅读