Flutter 在颤振中弹出屏幕后如何调用函数更新值?

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对象。 从导航堆栈中弹

屏幕1:使用添加按钮显示项目列表屏幕2:将新项目添加到列表的表单

屏幕2“屏幕1在屏幕2中调用navigator.pop()时,如何在屏幕1中调用方法/setstate(更新列表)? 有人能帮我吗


我不想再次启动屏幕。我只需要在弹出上一个屏幕后运行方法来更新我的列表?

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); 
});
这里有一篇很好的文章来探讨这一点

这是完成此任务的另一种选择。非常感谢。哇。你救了我的命谢谢你。。