【问题标题】:Flutter: fullscreen background image covered by bottomnavigationbarFlutter:被底部导航栏覆盖的全屏背景图片
【发布时间】:2021-01-25 19:17:36
【问题描述】:

使用以下 Flutter 代码 (v.1.22.5),我正在努力解决背景图像无法全屏显示的问题(目前在 Android 11 中,尚未针对 iOS 进行测试),因为它被屏幕最底部的白色部分覆盖。如何使底部突出显示的白条消失/透明 - 或者还需要做什么 - 以便可以真正全屏感知背景图像?我尝试了几种方法,但没有任何帮助。

我的代码:

class _LoadingState extends State<Loading> {
  @override
  Widget build(BuildContext context) {
    SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
      systemNavigationBarColor: Colors.transparent, // navigation bar color

      systemNavigationBarDividerColor:
          Colors.transparent, //Navigation bar divider color
    ));

    return Scaffold(
      body: Stack(
        children: <Widget>[
          Container(
            decoration: BoxDecoration(
              image: DecorationImage(
                  image: AssetImage('assets/images/background.jpg'),
                  fit: BoxFit.cover),
            ),
          ),
          Align(
              alignment: Alignment.bottomCenter,
              child: Row(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: <Widget>[
                  IconButton(
                    icon: Icon(
                      Icons.home,
                      color: Theme.of(context).accentColor,
                    ),
                    onPressed: () {},
                  ),
                  IconButton(
                    icon: Icon(
                      Icons.home,
                      color: Theme.of(context).accentColor,
                    ),
                    onPressed: () {},
                  ),
                  IconButton(
                    icon: Icon(
                      Icons.home,
                      color: Theme.of(context).accentColor,
                    ),
                    onPressed: () {},
                  ),
                ],
              )),
        ],
      ),
    );
  }
}

【问题讨论】:

    标签: flutter


    【解决方案1】:

    在你的 initState 中调用它来隐藏状态和导航栏。

    SystemChrome.setEnabledSystemUIOverlays([]);
    

    但如果您只想隐藏底部导航栏,请尝试在您的 initState 上调用它。

    SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]);
    

    【讨论】:

    • 使用这条指令,底部的白条消失了,但现在状态栏变成了黑色,我有一个黑条覆盖了顶端的背景图像 XD
    • 该死,我的错。你是完全正确的:使用 SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]);只有底部栏消失。谢谢你。
    • 还有一个问题。是否也可以将此设置应用于启动屏幕,因为我在屏幕底部也遇到了一个黑条,它在应用启动时覆盖了背景图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多