在渲染之前更新 getx 控制器中的值

Posted

技术标签:

【中文标题】在渲染之前更新 getx 控制器中的值【英文标题】:Update a value in a getx controller before it has been rendered 【发布时间】:2021-06-22 20:33:18 【问题描述】:

我有一长串项目(对象),每个项目都有一个 getx 控制器。 Get.put(ItemController(itemModel), tag: itemModel.value.id.toString()) 在创建项目图块时在ListView.builder() 中设置,但似乎控制器仅在图块显示时才真正创建,并且最初仅显示前 10 个左右。

然后我需要更新所有(许多)项目的值。

当我尝试更新项目控制器中的值时,它无法“找到”控制器(因为它们尚未创建)。

可以对同一个项目再次使用Get.put() 吗?还是有更好的方法来访问这些项目控制器?

【问题讨论】:

【参考方案1】:

您需要创建一个循环遍历您的列表项和puts 您对每个项的依赖项的方法。 你需要在build 方法上调用该方法,在ListView.builder 之前。

GetX 仅在需要时创建依赖项。就像,如果你只是 'Get.put(Something())',它不一定会在调用 Get.put 时被调用。通常,在第一次使用该依赖项时会创建依赖项。所以当调用something.someOtherThing 时,GetX 会创建Something

【讨论】:

以上是关于在渲染之前更新 getx 控制器中的值的主要内容,如果未能解决你的问题,请参考以下文章

Flutter GetX 状态管理不起作用

如何在彼此内部使用 2 个 getx 控制器?

即使收到更新的数据,Flutter ListView.builder 的 UI 也不会被 getx 更新

Flutter GetX 状态管理按钮单击

在构建 GetX<LogoPickerController>(控制器:'LogoPickerController' 的实例,标签:null,有构建器,脏

Flutter GetX 为啥控制器在导航时没有自动删除