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

发布于 2025-01-10 22:21:47 字数 622 浏览 0 评论 0原文

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

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

我知道我可以使用 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
});

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

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

I am using GetX in my project. Lets suppose I have two screens. Each screen have a button.
The controller of first screen have observable list of objects. When a button in first screen is pressed, one of the object list is sent to second screen.

In second screen user changes the value of the data received and when save button is pressed, I want to update the observable list in first screen as well.

I know I can use Get.back() to send updated data back to first screen. I could do following in second screen

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

And in first screen I could do

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

My Question.
Can I update list in first screen without navigating back to first screen when Save button is pressed.

I am pretty new with GetX and i am trying to learn it. Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

少女的英雄梦 2025-01-17 22:21:47

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

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

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

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

@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";
}

As long that when you navigate to the second screen using Get.to() then you can always access the data in the controller of the first screen using Get.find().

Here's a sample I tweaked it a little bit:

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

On the controller on the second screen you can access(view/update) the data using the index.

@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";
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文