Navigator.pushNamed(context, '/screen2').then((_) {
// This block runs when you have returned back from screen 2.
setState(() {
// code here to refresh data
});
});
Navigator.pushNamed(context, '/page2').then((_) {
// This block runs when you have returned back to the 1st Page from 2nd.
setState(() {
// Call setState to refresh the page.
});
});
对于未命名路由:
Navigator.push(context, MaterialPageRoute(builder: (_) => Page2())).then((_) {
// This block runs when you have come back to the 1st Page from 2nd.
setState(() {
// Call setState to refresh the page.
});
});
7条答案
按热度按时间ycl3bljg1#
Navigator.push
方法返回Route的泛型类型的future:在新的路由中,当你有你需要的值时:
nnt7mjpx2#
如果在列表页面上创建函数retrieveData()来读取数据列表,然后在initState中调用它,如果使用pushNamed路由,简单的解决方案是
如果你用的是推送路由
这应该是足够的。没有必要在添加页面上的额外代码。这将是工程,如果用户按下返回按钮也,再次,没有额外的代码在添加页面。
zz2j4svz3#
在@ian的答案中添加选项
这对我很有效。每当页面加载时,它都会重建。
carvr3hs4#
当重定向到屏幕2时,在下面写代码,
使用
导航器.pop(上下文);
从屏幕2到屏幕1
gupuwyp25#
我将一个回调方法作为Navigator路由参数传递到“add”页面。回调是我的列表页面中的一个方法。“add”页面在退出时执行回调。然后回调方法只是刷新数据并调用setState刷新屏幕。
我的架构使用Provider和视图模型,但在标准应用程序中也应该是直接的。
2ul0zpep6#
对于命名路由:
对于未命名路由:
siv3szwd7#
我使用
Navigator.pushAndRemoveUntil
,它将刷新页面并再次加载数据,这是示例:更新2023,如果你使用GetX,你可以用这个例子: