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

Flutter调用Navigator.popUntil()返回首页时出现黑屏问题求助

问题原因

你在router.dart的generateRoute方法中创建CupertinoPageRoute实例时,没有将方法入参的settings传递给路由实例,导致所有生成的路由settings.name属性为空。ModalRoute.withName(router.home)无法匹配到栈中的首页路由,Navigator.popUntil会持续弹出路由直到整个路由栈为空,最终出现黑屏。

连续两次pop可以正常返回的原因是你明确控制了弹出次数,刚好可以把page2、page1依次弹出,停在首页,不会触发栈空的情况。

修复方案

修改router.dart中的generateRoute方法,给所有返回的CupertinoPageRoute增加settings参数赋值即可:

Route<dynamic> generateRoute(RouteSettings settings) {
  switch (settings.name) {
    case home:
      // 新增settings: settings参数
      return CupertinoPageRoute(builder: (context) => const Home(), settings: settings);
    case page1:
      return CupertinoPageRoute(builder: (context) => const Page1(), settings: settings);
    case page2:
      return CupertinoPageRoute(builder: (context) => const Page2(), settings: settings);
    default:
      print('Undefined view');
      return CupertinoPageRoute(
          builder: (context) => UndefinedView(
                name: settings.name ?? 'No Name',
              ),
          settings: settings);
  }
}

修改完成后重新运行项目,popUntil就可以正常匹配到首页路由,点击返回按钮可直接回到首页,不会再出现黑屏问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:39:02