You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android Q手势导航下让Flutter应用实现全屏延伸显示

pixel phone using the new Android Q gesture navigation

实现Flutter应用UI延伸至Android手势导航区域方案

要实现上述界面中内容穿透底部手势导航栏显示的效果,仅升级Flutter版本无法自动生效,需要同时完成Android原生侧和Flutter层的配置,步骤如下:

1. Android原生侧主题配置

修改android/app/src/main/res/values/styles.xml中的App主题,新增以下属性:

<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
    <!-- 原有配置保留,新增以下内容 -->
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:navigationBarColor">@android:color/transparent</item>
    <item name="android:enforceNavigationBarContrast">false</item>
</style>

如果应用适配了Android 12及以上版本,需要同步修改values-v31目录下的同名文件。

2. Flutter全局系统UI配置

在main.dart的入口函数中新增SystemUI配置:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  // 配置系统栏透明,允许应用内容延伸至系统栏区域
  SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
    statusBarColor: Colors.transparent,
    navigationBarColor: Colors.transparent,
    // 根据应用主题调整系统栏图标明暗
    systemNavigationBarIconBrightness: Brightness.dark,
    statusBarIconBrightness: Brightness.dark,
  ));
  runApp(const MyApp());
}

3. 页面Scaffold属性配置

在需要实现延伸效果的页面Scaffold中开启extendBody属性:

Scaffold(
  extendBody: true, // 允许body内容延伸到底部导航栏下方
  // 若需要内容延伸到顶部状态栏下方,可额外开启下方属性
  // extendBodyBehindAppBar: true,
  body: const YourPageContent(),
)

额外适配提示

如果页面包含可滚动组件,建议在滚动组件底部添加EdgeInsets.only(bottom: MediaQuery.of(context).padding.bottom)的内边距,避免底部交互内容被手势条遮挡。


内容的提问来源于stack exchange,提问作者BeamlakAschalew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:18:04