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";
}
我在我的项目中使用 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";
}