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

Flutter中如何隐藏安卓模拟器底部返回、主页按键栏避免遮挡UI?

Flutter安卓端系统按键栏遮挡UI解决方案

场景示例

场景示例图

方案1:适配系统按键栏(推荐,符合安卓交互规范)

无需隐藏系统按键栏,只需让UI内容自动避开系统栏区域即可:

  • 最简单的方式是在页面根布局外包裹SafeArea组件,它会自动识别系统状态栏、底部按键栏的占位高度,给内容添加对应边距:
import 'package:flutter/material.dart';

@override
Widget build(BuildContext context) {
  return Scaffold(
    // 包裹原有页面内容即可
    body: SafeArea(
      child: 你的原有页面Widget,
    ),
  );
}
  • 如需自定义边距,也可以手动获取底部系统栏高度,给底部控件添加对应padding:
// 获取底部系统按键栏高度
final bottomPadding = MediaQuery.of(context).padding.bottom;

方案2:隐藏/自动隐藏系统按键栏(全屏场景适用)

如果需要全屏显示内容,可以通过SystemChrome类控制系统UI的显示状态:

  1. 首先导入services依赖:
import 'package:flutter/services.dart';
  1. 在页面的生命周期方法中配置UI模式:
@override
void initState() {
  super.initState();
  // 模式1:沉浸式粘性模式,隐藏顶部状态栏+底部按键栏,用户边缘滑动时临时调出,几秒后自动隐藏
  SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);

  // 模式2:仅隐藏底部按键栏,保留顶部状态栏
  // SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top]);
}

@override
void dispose() {
  // 页面销毁时恢复系统UI默认显示,避免影响其他页面
  SystemChrome.setEnabledSystemUIMode(
    SystemUiMode.edgeToEdge,
    overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom],
  );
  super.dispose();
}

注意事项

  • 如果需要全局生效,可在main()方法中runApp之前配置SystemChrome的UI模式即可。
  • 部分安卓定制系统可能有自己的手势导航逻辑,优先使用方案1适配,兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:27:02