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

如何在Flutter中将Android状态栏设置为浅色模式

Flutter Android状态栏浅色模式(图标深色)实现方案

嘿,我来帮你搞定这个问题!你想要把Android状态栏改成浅色背景+深色图标,其实现在已经有成熟的实现方式了,不用等那个开发中的issue,下面给你几个靠谱的方案:

方案一:用Flutter官方API(推荐)

Flutter自带的SystemChrome类就能直接控制状态栏样式,步骤很简单:

  1. 导入services包:
import 'package:flutter/services.dart';
  1. 在页面初始化时设置样式(比如在initState里):
@override
void initState() {
  super.initState();
  // 设置状态栏为白色背景,图标深色
  SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
    statusBarColor: Colors.white, // 状态栏背景色(浅色)
    statusBarIconBrightness: Brightness.dark, // Android状态栏图标深色
    statusBarBrightness: Brightness.light, // 适配iOS的状态栏亮度,Android可以忽略
  ));
}

如果你的页面用了AppBar,注意AppBar会默认覆盖状态栏样式,所以要在AppBar里单独设置:

AppBar(
  backgroundColor: Colors.white, // AppBar背景和状态栏保持一致
  systemOverlayStyle: const SystemUiOverlayStyle(
    statusBarColor: Colors.white,
    statusBarIconBrightness: Brightness.dark,
  ),
  title: const Text('我的页面'),
)

也可以全局设置,在MaterialApp的主题里配置,这样所有页面都会生效:

MaterialApp(
  theme: ThemeData(
    appBarTheme: const AppBarTheme(
      backgroundColor: Colors.white,
      systemOverlayStyle: SystemUiOverlayStyle(
        statusBarColor: Colors.white,
        statusBarIconBrightness: Brightness.dark,
      ),
    ),
  ),
  home: const HomePage(),
)

方案二:第三方包辅助(如果官方API不生效)

如果官方方法在某些机型上没效果,可以试试flutter_statusbarcolor这个第三方包:

  1. 在pubspec.yaml添加依赖:
dependencies:
  flutter_statusbarcolor: ^0.2.3
  1. 调用方法设置:
import 'package:flutter_statusbarcolor/flutter_statusbarcolor.dart';

void setupStatusBar() async {
  // 设置状态栏背景为白色
  await FlutterStatusbarcolor.setStatusBarColor(Colors.white);
  // false表示图标为深色(true是白色图标)
  FlutterStatusbarcolor.setStatusBarWhiteForeground(false);
}

注意事项

  • 这个功能只支持Android 6.0(API 23)及以上的机型,低版本系统不支持状态栏图标颜色切换,只能保持默认样式。
  • 如果你的页面是全屏模式(隐藏AppBar),记得确保状态栏背景色和页面顶部背景色一致,避免出现突兀的色块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:02:14