Flutter,如何从第二个屏幕更新第一个屏幕控制器中声明的反应列表?

Flutter, how to update reactive list declared in first screen controller from the second screen?

我在我的项目中使用 GetX。假设我有两个屏幕。每个屏幕都有一个按钮。 第一个屏幕的控制器具有可观察的对象列表。当按下第一个屏幕中的按钮时,对象列表中的一个被发送到第二个屏幕。

在第二个屏幕中,用户更改接收到的数据的值,当按下 save 按钮时,我也想更新第一个屏幕中的可观察列表。

我知道我可以使用 Get.back() 将更新的数据发送回第一个屏幕。我可以在第二个屏幕中执行以下操作

Get.back(result: [
    {"updatedObject": listDetails}
]);

在第一个屏幕上我可以做到

Get.to(() => SecondScreen(), arguments: [
   {"list": listDetails[index]}
]).then((result) {
    // result[0]["updatedObject"]  // use this to update list observable
});

我的问题。 当按下 Save 按钮时,我可以在第一个屏幕中更新列表而不导航回第一个屏幕吗?

我对 GetX 还很陌生,我正在努力学习它。谢谢

只要当您使用 Get.to() 导航到第二个屏幕时,您就可以随时使用 Get.find() 访问第一个屏幕的控制器中的数据。

这是我稍微调整了一下的示例:

Get.to(() => SecondScreen(), arguments: 
   {"index": index},
)

在第二个屏幕上的控制器上,您可以使用索引访问(view/update)数据。

@override
void onInit() {
   index = Get.arguments['index'];
   // View
   name = Get.find<FirstScreenController>().listDetails[index].name;
   print(name);
   // Update
   Get.find<FirstScreenController>().listDetails[index].name = "John";
}