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

Flutter中从dialog或bottom sheet跳转页面时bottomBar导航栏隐藏如何解决

问题原因

你使用的应该是persistent_bottom_nav_bar这类持久化底部导航库,问题根源是showDialog/showModalBottomSheet默认开启了useRootNavigator: true,会把弹窗压入APP的根导航栈,而不是底部导航关联的子路由栈。从根导航栈跳转页面时,页面会覆盖整个根窗口,自然就把底部导航栏盖住了。

解决方案
  • 第一步:调用showDialog时显式设置useRootNavigator: false,让弹窗挂载到当前子页面的路由栈,而非根栈
    修改后的showTheDialog代码如下:
showTheDialog()
{
showDialog(
    context: context,
    useRootNavigator: false, // 新增这一行,核心修改
    builder: (BuildContext context) {
      return AlertDialog(
        title: Text("My Super title"),
        content: Text("Hello World"),
        actions: [
          TextButton(
            onPressed: () {
              Navigator.pop(context);
              gotoSecondScreen();
            },
            child: Text('Go Forward'),
          )
        ],
      );
    });
}
  • 第二步:如果上述修改后还有问题,确认你调用pushNewScreen时传入的上下文mainCon是你的Scaffold页面的上下文,而非弹窗的builder上下文,也不是根路由的上下文。
  • 如果你是从showModalBottomSheet跳转,同样给showModalBottomSheet加上useRootNavigator: false参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:45:03