屏幕1:显示带有添加按钮的项目列表屏幕2:将新项目添加到列表的表单。
屏幕2》屏幕1在屏幕2中调用navigator.pop()时,如何在屏幕1中调用方法/设置状态(以更新列表)? 谁能帮我吗?
我不想再次启动屏幕。我只需要运行方法以在弹出上一个屏幕后更新列表?
答案 0 :(得分:3)
当您从屏幕1导航到屏幕2时,可以使用push
方法。 push
方法返回一个Future
对象。
在屏幕2从导航堆栈中弹出后,可以使用then
的{{1}}方法执行代码。
Future
答案 1 :(得分:1)
您可以使用 Provider 或 Bloc ,也可以在按下页面时等待结果
答案 2 :(得分:0)
Navigator.pop
有第二个参数,称为result。
然后,您可以将所需的值返回到第一页,该页将以Navigator.push
答案 3 :(得分:0)
您可以这样:
// this method waits for the pop to be called
var data = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginScreen()),
);
debugPrint(data);
// here the second argument is the data
Navigator.pop(context, "data"); // popped from LoginScreen().
输出
数据
同样的方法也可以像下面这样
// this method waits for the pop to be called
Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginScreen()),
).then((data){
// then will return value when the loginScreen's pop is called.
debugPrint(data);
});
这是一篇很好的文章 https://medium.com/flutter-community/flutter-push-pop-push-1bb718b13c31