Flutter:Navigator.pushReplacement返回到Navigator.push内部后的setState

时间:2018-12-04 15:32:34

标签: navigation flutter screen navigator

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之后执行。

有什么方法可以实现预期的行为?

0 个答案:

没有答案