flutter 和getx : update() does not notify GetBuilder

标签 flutter dart flutter-getx

我当前使用 Flutter 和 getx 包的项目遇到了一个非常奇怪的问题。简短:通知程序不工作。在 GetBuilderinitState 上,我尝试更新变量 (.obs) 并调用 update(),但 View 对此一无所知。

复制代码

获取x Controller :

class HoursController extends GetxController {
  final AwController awController = AwController();
  final hours = [].obs;

  void loadHours({required Kunde kunde}) async {
    this.hours.assignAll(["Test1", "Test2"]);
    update(["hours"]);
  }
}

查看:

GetBuilder<HoursController>(
  id: "hours",
  initState: (_) {
    HoursController().loadHours(kunde: this.kunde);
  },
  builder: (controller) {
    if (controller.hours.length == 0) {
      return Container(
        child: Text("Nothing"),
      );
    }
    return ListView.builder(
        shrinkWrap: true,
        physics: ClampingScrollPhysics(),
        itemCount: controller.hours.length,
        itemBuilder: (BuildContext context, int index) {
          return ListTile(
            title: Text(controller.hours[index]),
          );
        });
  },
)

预期行为 在调用 initState 上的函数(该函数更改了 hours 变量)后,我希望 update["hours"] 将通知 View 刷新国家。但什么也没发生。控制台显示正确的数据。所以变量确实被刷新了,但 View 没有收到通知。

flutter 版本: Flutter 2.2.3 • channel 稳定 • https://github.com/flutter/flutter.git 框架 • 修订版 f4abaa0735(8 周前) • 2021-07-01 12:46:11 -0700 发动机 • 修订版 241c87ad80 工具•Dart 2.13.4

Getx 版本: 4.3.8

顺便说一句 我正在使用 Flutter Desktop

最佳答案

好的,解决了...问题是 HoursController().loadHours(kunde: this.kunde);。这里我创建了一个 HoursController 的新实例。但我需要使用上面通过 Get.find() 创建的实例。

关于 flutter 和getx : update() does not notify GetBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68953884/

相关文章:

android - 在像 Hive for Flutter 这样的 No-SQL DB 中处理数据库更改的最佳方法是什么?

dart - flutter 中的 StringBuffer 未按预期工作

flutter - 在 flutter 中定义状态

dom - 在Dart中尝试访问dom中的Web组件实例时遇到麻烦?

flutter - 无法将类型为 'String' 的值分配给 flutter Getx 中类型为 'RxString' 的变量

Flutter 避免多次运行 FutureBuilder

android - flutter 复选框在无状态小部件中不起作用

flutter - 在CustomScrollView中检测项目退出 View

flutter - GetX Get.arguments 总是返回 null

flutter - 是否可以从另一个 GetxController 访问 GetxController 值? Flutter 获取包