如何在Flutter中使用多个getx控制器?

Dam*_*ian 7 controller flutter flutter-getx

我想知道如何在 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: ...
        );
      ]
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 1

  1. 请记住,如果您使用 GetBuilder(),则必须在执行某些操作后手动更新控制器状态。

  2. 在函数的构建方法中初始化控制器不是一个好主意。您应该将它们放在只初始化一次的位置(在构建方法之外)

  3. 如果您在一个小部件中使用了多个控制器,则应考虑使用 Obx(() {return Widget}) 方法。

在此处阅读有关使用 getx 进行状态管理的更多信息