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());
}

最终效果:

相关推荐
we1less12 小时前
[audio] AudioTrack (五) 共享内存创建分析
android·java·开发语言
hslinux12 小时前
NDK 通过configure 编译C++源码通用脚本
android·c++·ndk·configure
消失的旧时光-194312 小时前
Flutter 工程中 mixin 的正确打开方式:5 种高质量设计范式 + mixin vs 继承 vs 组合 + 为什么它比 BasePage 更优雅
前端·flutter·架构
2501_9151063212 小时前
iOS 抓包工具有哪些?不同类型的抓包工具可以做什么
android·ios·小程序·https·uni-app·iphone·webview
消失的旧时光-194312 小时前
Flutter 中 mixin 的完整认知体系——从原理、范式、架构选择到反模式(工程实战版)
flutter·架构
2501_9462447812 小时前
Flutter & OpenHarmony OA系统下拉刷新组件开发指南
开发语言·javascript·flutter
kirk_wang13 小时前
Flutter 三方库 simple_circular_progress_bar 在 OHOS 平台的适配实践
flutter·移动开发·跨平台·arkts·鸿蒙
芦半山13 小时前
2025:生活是个缓慢受锤的过程
android·年终总结
Kapaseker21 小时前
你不看会后悔的2025年终总结
android·kotlin
alexhilton1 天前
务实的模块化:连接模块(wiring modules)的妙用
android·kotlin·android jetpack