dart 将手势栏颜色设置为透明[抖动]

xpszyzbs  于 2022-12-20  发布在  其他
关注(0)|答案(4)|浏览(184)

我需要将导航栏设置为透明,但不是隐藏。就像左边的Youtube音乐的例子一样。

我尝试了几种方法,每当我定义它为透明的酒吧是白色的。

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark.copyWith(
  systemNavigationBarColor: Colors.transparent,
  systemNavigationBarDividerColor: Colors.transparent,
));

请看右边的图片。我只需要白色部分是透明的,手势指示器需要保持可见。有人能帮我吗?

41ik7eoe

41ik7eoe1#

我没试过,但我觉得应该可以

Container(
  color: Colors.black,
  child: SafeArea(
    child: YourWidget(),
  )
)
khbbv19g

khbbv19g2#

我认为你可以不用SystemChrome类就能实现这个目标,一种方法是用Theme小部件 Package BottomNavigationBar,使用它的canvasColor属性并将Colors.transparent赋给它,如下所示:

bottomNavigationBar: Theme(
        data: Theme.of(context)
            .copyWith(canvasColor: Colors.transparent),
        child: BottomNavigationBar(
          currentIndex: 0,
          items: [
            BottomNavigationBarItem(
                icon: Icon(Icons.home), title: Text('Home')),
            BottomNavigationBarItem(
                icon: Icon(Icons.home), title: Text('Home')),
            BottomNavigationBarItem(
                icon: Icon(Icons.home), title: Text('Home'))
          ],
        ),
      ),

上面会导致这样的结果:

要删除shadow effect,请使用elevation属性并将0传递给它,这将生成透明的navigation bar,如下所示:

这样,如果您更改支架的背景颜色,导航栏将显示为透明色。
希望这能回答你的问题

knsnq2tg

knsnq2tg3#

把你的导航条放在一个容器中。然后不给予容器任何颜色,它会自动将颜色设置为透明。要将容器与底部对齐,你可以这样做。希望这会起作用。
Flutter

Align(
              alignment: Alignment.bottomLeft,
              child: Container(
                width: MediaQuery.of(context).size.width,
                height: 50.0,
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                  children: <Widget>[

                  ],
                ),
              ),
            )
bnl4lu3b

bnl4lu3b4#

你的解决方案是不够的,你应该使用以下方式也:

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

相关问题