在 Flutter 中,MobX 通过 mobx 和 flutter_mobx 包实现状态管理,依赖响应式编程自动更新 UI。以下是实现步骤:
-
添加依赖
在 pubspec.yaml 中添加:
dependencies:
mobx: ^2.1.4
flutter_mobx: ^2.0.6
dev_dependencies:
build_runner: ^2.4.6
mobx_codegen: ^2.1.3
-
创建可观察状态
使用 mobx_codegen 自动生成代码。例如,创建一个计数器状态类:
import 'package:mobx/mobx.dart';
part 'counter.g.dart'; // 生成的文件
class Counter = CounterBase with _$Counter;
abstract class CounterBase with Store {
@observable
int value = 0;
@action
void increment() {
value++;
}
}
-
生成代码
运行命令生成 counter.g.dart:
flutter packages pub run build_runner build
-
在 UI 中使用
通过 Observer 小部件监听状态变化:
import 'package:flutter_mobx/flutter_mobx.dart';
final counter = Counter(); // 实例化状态
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Observer(
builder: (_) => Text('${counter.value}'),
),
),
floatingActionButton: FloatingActionButton(
onPressed: counter.increment,
child: Icon(Icons.add),
),
);
}
}
核心概念:
@observable:标记状态为可观察。
@action:定义修改状态的方法。
Observer:自动响应状态变化并重建 UI。
此方法简化了状态管理,无需手动调用 setState。