Flutter中如何让Android的手势导航栏完全透明?

Flutter 开发中 安卓机器都有 像ios 的手势操作栏, 也就是屏幕底下的 那条线。

但这条线默认是有颜色的 (像下面这样)

一、全屏幕方式

复制代码
void main() {
   // 全屏沉浸式
   SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [])

   runApp(YouApp());
}

问题也比较明显, 当想用手势的时候 需要向上滑动两次,先拉出手势条,然后再操作

二、使用同色覆盖(对 非单一色无法处理)

网易云音乐 就是使用了此方式。至少是发文章此时的 版本是这样的。

* 多个页面底色不同时,需要重新调用此代码。

复制代码
SystemChrome.setSystemUIOverlayStyle(
    const SystemUiOverlayStyle(
      systemNavigationBarColor: Colors.grey, // 根据主题设置底栏颜色
      statusBarColor: Colors.transparent, // 如果想要状态栏透明,可以设置为透明色
    ),
  );

效果如下

三、与 ios 效果相同。

最后一种也就是像ios 一样,手势栏覆盖在UI之上。

其实只在 第二部分代码中,多加一行代码即可。

值得注意的是, 一旦初始化完成后, 如果再调用此函数 SystemChrome.setEnabledSystemUIMode() 进行其他设置,会重新覆盖SystemUiMode.edgeToEdge 配置,导致 手势栏又变成 有背景色的样子

复制代码
void main() {
  SystemChrome.setSystemUIOverlayStyle(
    const SystemUiOverlayStyle(
      systemNavigationBarColor: Colors.transparent, // 根据主题设置底栏颜色
      statusBarColor: Colors.transparent, // 如果想要状态栏透明,可以设置为透明色
    ),
  );

   // 让 Flutter 在导航栏后面绘制
   SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);

   runApp(YouApp());
}

最终效果:

相关推荐
吃好喝好玩好睡好13 分钟前
OpenHarmony+Electron+Flutter:构建轻量化VR/AR跨端交互应用指南
flutter·electron·vr
晚霞的不甘23 分钟前
Flutter + OpenHarmony UI 设计规范:打造整齐、美观、一致的全场景体验
flutter·ui·设计规范
松☆26 分钟前
OpenHarmony + Flutter 混合开发进阶:实现跨设备分布式数据同步与状态共享
分布式·flutter
ujainu32 分钟前
Flutter入门:Dart基础与核心组件速成
javascript·flutter·typescript
吃好喝好玩好睡好34 分钟前
OpenHarmony混合开发:Flutter+Electron实战
javascript·flutter·electron
克喵的水银蛇1 小时前
Flutter 通用表单组件封装:FormKit 一站式解决表单验证、状态管理与交互优化
flutter·microsoft·交互
黑马源码库miui520861 小时前
JAVA成人用品商城系统源码微信小程序+h5+安卓+ios
android·java·微信小程序
ujainu1 小时前
Flutter性能优化实战:从卡顿排查到极致流畅
flutter·性能优化
克喵的水银蛇1 小时前
Flutter 通用下拉刷新上拉加载列表:PullRefreshList
flutter·下拉刷新·组件封装·上拉加载
帅气马战的账号1 小时前
开源鸿蒙+Flutter:分布式协同驱动的全场景跨端开发新范式
flutter