在我的应用中,第一个屏幕通过Navigator.of(context).push
导航到第二个屏幕。然后,第二屏幕通过Navigator.pushReplacement
导航到第三屏幕。当我在第三个屏幕上pop
时,该应用将返回到第一个屏幕,跳过第二个屏幕。
如果我想将数据从第二个屏幕传递回第一个屏幕,则只需在第一个屏幕上使用await Navigator.push(context)
,然后在第二个屏幕上pop
时就可以传入上下文中的数据。但是,在这种情况下,涉及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)
});