当用户使用返回键从任何其他页面返回页面时如何刷新页面?

Posted

技术标签:

【中文标题】当用户使用返回键从任何其他页面返回页面时如何刷新页面?【英文标题】:How to refresh the page when user comes back to it from any other page using back key? 【发布时间】:2019-11-28 06:36:36 【问题描述】:

我有一个页面正在调用多个类和不同的小部件 通过点击它,用户可以跳转到任何页面。

目前的问题是我想在每次向用户显示原始页面时刷新原始页面

新加载时(暂时没有问题)。

当用户使用返回键从其他页面返回时。 旧数据显示在页面上,我正试图摆脱它。

我已经尝试过使用Navigator.push 方法(Observer class 方法)并尝试在用户按下后键时进行监听。

但是有多个页面服务于独特的请求,我不想将每个人都链接到第一页。 在点击Navigator.pop(context) 方法时,我必须传递一些字符串。

有谁知道 当用户使用 backkey 返回页面时,如何刷新页面。

【问题讨论】:

你找到解决办法了吗? 检查一下,***.com/questions/49804891/… 【参考方案1】:

Navigator.push 在传递给它的MaterialPageRoute 被解析时返回一个Future。您可以等待 Future 以了解其他视图何时弹出。

例子,

Navigator.of(context).push(MaterialPageRoute(
  builder: 
    (context) => NewView(),
  ),
).then((_) 
  // Call setState() here or handle this appropriately
);

【讨论】:

我已经在我的问题中提到过我尝试过这种方法,请阅读问题,该方法在我的用例中不可行。【参考方案2】:

有同样的问题,以下对我有用(下面的代码在FirstPage()):

Navigator.push( context, MaterialPageRoute( builder: (context) => SecondPage()), ).then((value) => setState(() ));

在您从SecondPage() 弹回FirstPage() 后,“then”语句将运行并刷新页面。

【讨论】:

虽然这是一种可能的解决方案,但最好使用状态管理来更新小部件。【参考方案3】:

NavigatorObserver可以监听路由变化。

您需要创建覆盖didPopdidPush 等的实现。 然后您可以将其传递给MaterialAppNavigatornavigatorObservers 字段

【讨论】:

我已经尝试过使用 NavigatorObserver 类,你可以看到我在我的问题中已经提到了。但在我的用例中它没有帮助。

以上是关于当用户使用返回键从任何其他页面返回页面时如何刷新页面?的主要内容,如果未能解决你的问题,请参考以下文章

vue,vue-router实现浏览器返回不刷新页面

vue返回上一页面时回到原先滚动的位置

mui.back()返回刷新功能

单页应用/vue等页面未保存刷新关闭返回等确认提示

Flutter页面状态在返回时不刷新

PhoneGap如何使用一页应用刷新/重新加载页面