Flutter 在颤振中弹出屏幕后如何调用函数更新值?
屏幕1:使用添加按钮显示项目列表屏幕2:将新项目添加到列表的表单 屏幕2“屏幕1在屏幕2中调用navigator.pop()时,如何在屏幕1中调用方法/setstate(更新列表)? 有人能帮我吗Flutter 在颤振中弹出屏幕后如何调用函数更新值?,flutter,dart,mobile,flutter-layout,Flutter,Dart,Mobile,Flutter Layout,屏幕1:使用添加按钮显示项目列表屏幕2:将新项目添加到列表的表单 屏幕2“屏幕1在屏幕2中调用navigator.pop()时,如何在屏幕1中调用方法/setstate(更新列表)? 有人能帮我吗 我不想再次启动屏幕。我只需要在弹出上一个屏幕后运行方法来更新我的列表?Navigator。pop有第二个参数,称为result。 然后,您可以将需要的值返回到第一个页面,该页面将读取该值作为导航器的返回值。按当您从屏幕1导航到屏幕2时,使用按方法。push方法返回一个Future对象。 从导航堆栈中弹
我不想再次启动屏幕。我只需要在弹出上一个屏幕后运行方法来更新我的列表?
Navigator。pop
有第二个参数,称为result。
然后,您可以将需要的值返回到第一个页面,该页面将读取该值作为
导航器的返回值。按当您从屏幕1导航到屏幕2时,使用按方法。push
方法返回一个Future
对象。
从导航堆栈中弹出屏幕2后,可以使用Future
的then
方法执行代码
Navigator.of(上下文)
.推动(物料管理器路线)(
生成器:(上下文)=>Screen2(),
))
.然后((值){
//你可以在这里做你需要的
//设置状态等。
});
您可以使用提供者或集团,也可以在推送页面时等待结果您可以这样做:
// 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);
});
这里有一篇很好的文章来探讨这一点
这是完成此任务的另一种选择。非常感谢。哇。你救了我的命谢谢你。。