当我导航回它时,有没有办法更新我的列表视图页面?

Posted

技术标签:

【中文标题】当我导航回它时,有没有办法更新我的列表视图页面?【英文标题】:Is there a way to update my listview page as I navigate back to it? 【发布时间】:2020-08-27 06:31:44 【问题描述】:

我的应用程序有三个页面,一个主页、一个列表视图页面和一个设置页面。我从主页导航到列表视图页面,然后单击列表视图页面中的浮动操作按钮,我创建了一个新配置文件并进入该配置文件的设置页面。一旦我选择了我的设置,我希望它们显示在我的列表视图中的卡片中。我有一个从中检索设置的 sqflite 数据库。这很好用,但有一个主要问题:我必须为每张新卡片热重新加载我的应用程序才能在我的列表视图中显示。

我想要的是当我导航回它时更新我的​​列表视图页面。

我尝试使用 Navigator Push 从我的设置页面返回到我的列表视图页面,如下所示:

Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => ProfilesList(),
  );

这适用于我的列表视图然后立即更新。但是当我点击后退按钮时,我没有回到主页,而是再次进入设置屏幕,因为这是我推送的地方。所以我无法返回主应用程序屏幕。

有解决办法吗?目前,我必须在我的个人资料列表未更新但我的导航正常工作,或者我的个人资料列表更新但我的导航不工作之间做出选择。

在导航方面,我需要的是:第 1 页 => 第 2 页 => 第 3 页 => 第 2 页 => 第 1 页

【问题讨论】:

【参考方案1】:

我找到了解决问题的方法:https://www.filledstacks.com/post/flutter-navigation-cheatsheet-a-guide-to-the-navigator/

所以基本上,我必须从设置页面弹出,但添加值“true”,如下所示:

Navigator.pop(context, true);

然后,在我的列表视图页面中,我所要做的就是等待该值返回,此时我可以重新加载我的列表,如下所示:

                 var navigationResult = await Navigator.push(
                        context,
                        MaterialPageRoute(
                          builder: (context) =>
                              ProfileCreator(),
                        ),
                      );
                      if (navigationResult == true)
                        setState(() 
                          getList();
                        );

我希望有一天这对某人有用...

【讨论】:

以上是关于当我导航回它时,有没有办法更新我的列表视图页面?的主要内容,如果未能解决你的问题,请参考以下文章

使用默认导航栏文本

带导航抽屉的空指针

导航控制器未显示在 TableView 中

我在使用 React 路由器时遇到问题,因为我的 url 在点击它时会得到更新,但页面没有被呈现

添加子视图后显示上一个视图控制器的页面视图控制器

当虚拟键盘覆盖它时,如何让您的页面将输入元素滚动到视图中?