在Flutter中弹出屏幕后,如何调用函数来更新值



屏幕1:显示带有添加按钮的项目列表。屏幕2:向列表中添加新项目的表单。

屏幕2>gt;屏幕1-在屏幕2中调用navigator.pop((时,如何在屏幕1中调用方法/setState(更新列表(?有人能帮我吗?

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

从屏幕1导航到屏幕2时,使用push方法。push方法返回一个Future对象。从导航堆栈中弹出Screen 2后,可以使用Futurethen方法执行代码。

Navigator.of(context)
.push(MaterialPageRoute(
builder: (context) => Screen2(),
))
.then((value) {
// you can do what you need here
// setState etc.
});

您可以使用ProviderBLoc,也可以在推送页面时等待结果

你可以这样做:

// 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

Navigator.pop有第二个参数,称为result。然后,您可以将所需的值返回到将读取该值的第一页,作为Navigator.push的返回值

相关内容

  • 没有找到相关文章