【问题标题】:How to hide android's bottom navigation bar in flutter如何在颤动中隐藏android的底部导航栏
【发布时间】:2019-02-21 05:26:30
【问题描述】:

我真的是 Flutter 和 Android 开发的新手,但是否可以通过编程方式隐藏底部导航栏(请参阅下面的哪个项目)?

【问题讨论】:

    标签: android dart flutter flutter-layout


    【解决方案1】:

    试试这个: SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]);

    Document

    【讨论】:

    • 好吧,我用过这个,但在那之后,我有一个空白区域。而且不能真正放任何东西。
    • 哦,这解决了。脚手架(resizeToAvoidBottomPadding: false, appBar: new AppBar(), );
    • 虽然这有效,但在某些设备上,当我们触摸屏幕时,它会显示底部导航栏。猜猜我们如何解决这个问题。
    • SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]) 不适合我。触摸屏幕时,底部栏会持续显示。
    • 似乎flutter团队对此无动于衷。 github.com/flutter/flutter/issues/62412
    【解决方案2】:

    使用SystemChrome.setEnabledSystemUIOverlays([])隐藏状态栏和导航栏。

    【讨论】:

      【解决方案3】:

      For 指定应用程序时可见的系统覆盖集 在跑。您可以使用以下静态方法:

        SystemChrome.setEnabledSystemUIOverlays(List<SystemUiOverlay> overlays)
      

      例子:

      1 - 隐藏底部导航栏和状态栏可见

      SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]);
      

      2 - 底部导航可见栏和隐藏状态栏

      SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
      

      3 - 隐藏底部导航和状态栏

      SystemChrome.setEnabledSystemUIOverlays([]);
      

      4 - 让都可见

       SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top, SystemUiOverlay.bottom]);
      

      【讨论】:

        【解决方案4】:

        在撰写此答案时,此处的所有其他帖子都已过时,使用 setEnabledSystemUIOverlays 将给出弃用消息。

        隐藏系统导航栏或状态栏导入:

        import 'package:flutter/services.dart';
        

        并使用服务SystemChrome.setEnabledSystemUIMode

        SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
        

        函数setEnabledSystemUIMode 接收SystemUiMode 枚举,它具有以下选项:

        • leanBack - 带有状态和导航栏的全屏显示,通过点击显示屏上的任意位置即可呈现。

        • 沉浸式 - 带有状态和导航栏的全屏显示,可通过在显示屏边缘的滑动手势呈现。

        • immersiveSticky - 通过屏幕边缘的滑动手势暂时呈现状态和导航栏的全屏显示。

        • edgeToEdge - 在应用程序上呈现状态和导航元素的全屏显示。

        • ma​​nual - 声明手动配置的 [SystemUiOverlay]。 (查看文档了解更多信息)

        【讨论】:

          【解决方案5】:

          我觉得你可以用这个

          SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top]);
          

          在你的initState()

          【讨论】:

            【解决方案6】:

            目前此功能在 Flutter 中存在错误,您可以在此处查看此问题。

            https://github.com/flutter/flutter/issues/62412

            通常您需要执行以下操作:

            SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]); 
            

            【讨论】:

              猜你喜欢
              • 2020-08-31
              • 2022-12-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多