如何在Flutter中将数据从第三屏幕传递到第一屏幕?

时间:2020-05-19 08:33:19

标签: flutter

在我的应用中,第一个屏幕通过Navigator.of(context).push导航到第二个屏幕。然后,第二屏幕通过Navigator.pushReplacement导航到第三屏幕。当我在第三个屏幕上pop时,该应用将返回到第一个屏幕,跳过第二个屏幕。

如果我想将数据从第二个屏幕传递回第一个屏幕,则只需在第一个屏幕上使用await Navigator.push(context),然后在第二个屏幕上pop时就可以传入上下文中的数据。但是,在这种情况下,涉及3个屏幕,我不能使用它。

3 个答案:

答案 0 :(得分:1)

我已经推动了一个扑朔迷离的项目,该项目使用集团模式进行状态管理,以解决您的问题。 该应用程序有3页。 第一个和第二个只有包裹在轻击手势(导航)中的简单标签。 第三个是输入,用于更改第一页和第二页上标签的值。 git repo

这是有关抖动状态管理的正式文档flutter state management

答案 1 :(得分:0)

我建议您阅读有关state management in Flutter的文档。 我发现Provider模式对此特别有用。

答案 2 :(得分:0)

使用Navigator.of(context).push将第二个屏幕转到第三个屏幕,当您弹出第三个屏幕时,出现在.then中的代码将弹出第二个屏幕并传递第二个屏幕的数据到第一个屏幕。

第一屏至第二屏:-

Navigator.push(context, CupertinoPageRoute(
   builder: (context)=>SecondScreen()
   )).then((value){  //value is the data which you pass while poping the second screen

});

第二屏至第三屏:-

Navigator.push(context, CupertinoPageRoute(
   builder: (context)=>ThirdScreen()
   )).then((value){ 
  Navigator.pop(context,your data)
 });