当用户使用返回键从任何其他页面返回页面时如何刷新页面?
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可以监听路由变化。
您需要创建覆盖didPop
、didPush
等的实现。
然后您可以将其传递给MaterialApp
或Navigator
的navigatorObservers
字段
【讨论】:
我已经尝试过使用 NavigatorObserver 类,你可以看到我在我的问题中已经提到了。但在我的用例中它没有帮助。以上是关于当用户使用返回键从任何其他页面返回页面时如何刷新页面?的主要内容,如果未能解决你的问题,请参考以下文章