我想知道如何在flutter中使用多个getx控制器。
即使数据有更新,也不能真实的反映。
并且Getbuilder只能使用一个控制器。
你能给予我举个代码的例子吗?
代码示例
class Controller1 extends GetxController {
int counter = 0;
void addCounter() {
counter++;
update();
}
}
class Controller2 extends GetxController {
int counter = 0;
void addCounter() {
counter++;
update();
}
}
class CounterView extends StatelessWidget {
@override
Widget build(BuildContext context) {
Controller1 controller1 = Get.find();
Controller2 controller2 = Get.find();
return Text(
'${controller1.counter} / ${controller2.counter}'
);
}
}
class CounterButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
Controller1 controller1 = Get.find();
Controller2 controller2 = Get.find();
return Column(
children: [
GestureDetector(
onTap: () => controller1.addCounter(),
child: ...
);
GestureDetector(
onTap: () => controller2.addCounter(),
child: ...
);
]
);
}
}
2条答案
按热度按时间cnwbcb6i1#
我有另一个解决办法。
更新:-使用Obx@无状态小部件
oknwwptz2#
1.请记住,如果使用GetBuilder(),则必须在执行某些操作后手动更新控制器状态。
1.在函数的构建方法中初始化控制器并不是一个好主意,你应该把它们放在只初始化一次的地方(构建方法之外)
1.如果小部件中使用了多个控制器,则应考虑使用Obx((){return Widget})方法。
阅读更多关于getx here状态管理的信息