class _HomeScreenState extends State<HomeScreen> {
...
onTap: () async {
await Navigator.push(
context,
MaterialPageRoute(builder: (context) => new EditScreen()),
);
setState(() {}); // ★
},
...
}
class _EditScreenState extends State<EditScreen> {
...
onPressed: () async {
Navigator.of(context).pushReplacement(
new MaterialPageRoute(builder: (context) => new EditCompleteScreen()),
);
},
...
}
class _EditCompleteScreenState extends State<EditCompleteScreen> {
...
onPressed: () {
Navigator.of(context).pop();
},
...
}
背景:在此应用中,共有三个场景。在主屏幕上点击一张卡将推动编辑屏幕。在编辑屏幕上,按返回按钮将弹出编辑屏幕,按另一个按钮将推动并用编辑完成屏幕替换编辑屏幕。在编辑完成屏幕上,按确认按钮将弹出编辑完成屏幕并返回主屏幕。
期望的行为:问题是我希望执行setState
(带有★的标记)是1)在按编辑屏幕上的后退按钮之后执行的; 2)在按编辑完成屏幕上的确认按钮。
当前行为:使用当前代码,1是正确的。但是对于2,setState
在EditScreenState中的pushReplacement
之后而不是EditCompleteScreenState中的pop
之后执行。
有什么方法可以实现预期的行为?