You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter代码中Navigator.pop()运行异常 点击返回按钮出现白屏崩溃

问题根因及解决方案

核心原因

你在HotDrinks子页面内嵌套了独立的MaterialApp,导致该页面内部的Navigator导航栈和项目全局导航栈完全隔离:

  • 你从其他页面跳转进入HotDrinks时,是将整个HotDrinks组件添加到全局导航栈中
  • 但HotDrinks内部重新创建了一个新的Navigator实例,它的初始路由就是MyHomePage,内部导航栈里只有这一个页面
  • 你点击返回调用Navigator.pop(context)时,弹出的是内部新Navigator的栈,弹完后内部栈为空,就会触发白屏崩溃,根本不会回到上层页面

修复方案

直接删除HotDrinks类中嵌套的MaterialApp即可,子页面不需要独立套MaterialApp,全局仅保留项目入口处的一个MaterialApp实例就足够。
修改后的HotDrinks代码参考:

class HotDrinks extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 直接返回页面内容,不要套MaterialApp
    return MyHomePage();
  }
}

如果不需要单独的MyHomePage封装,也可以直接把原MyHomePage的build方法内容移到HotDrinks的build中,删除多余的MyHomePage类即可。

辅助兼容方案

可以在pop前增加可弹出判断,避免出现空白崩溃:

onPressed: () {
  if (Navigator.of(context).canPop()) {
    Navigator.pop(context);
  }
}

内容的提问来源于stack exchange,提问作者sara97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:06:06