如何在 Flutter 中使 Android 的 StatusBar 透明

问题描述

我想让 Flutter 中的 Android 状态栏透明,但由于某种原因,我在某些屏幕上 显示黑色状态栏。 最低 SDK 为 20,目标 SDK 为 30。

我已经厌倦了这里的所有建议,但没有任何效果How to hide Android StatusBar in Flutter

此外,我已经尝试使用 Flutter 包来更改状态栏颜色:

import 'package:Flutter_statusbarcolor/Flutter_statusbarcolor.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    FlutterStatusbarcolor.setStatusBarColor(Colors.transparent);
    ...
  }
}

而且我已经尝试将这段代码放在每一页上:

@override
  initState() {
    SystemChrome.setsystemUIOverlayStyle(systemUIOverlayStyle(
      statusBarColor: Colors.transparent,));
    super.initState();
  }

使用上面的两个示例代码,我只设法使初始屏幕的 StatusBar 颜色透明,其中我还有一个背景图像。此处示例:

Transparent StatusBar

一旦应用程序加载状态栏变为黑色:

Black StatusBar

更奇怪的是,当我切换应用程序屏幕时,StatusBar 中的文本也会变黑并保持这种状态,直到应用程序重新启动:

enter image description here

我认为黑色状态栏可能是由于我的应用程序中的主题设置或其他设置影响了状态栏,但请注意我到目前为止已经尝试过有效。

理想情况下,我想让 StatusBar 透明,并使文本根据背景颜色在黑色和白色之间变化。可以手动设置透明度和文字颜色,只要有效即可。

有什么建议吗?

解决方法

在你的 main.dart 文件中,这样做 ->

void main() {
  SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
      statusBarColor: Colors.red));
  runApp(App(
  ));
}

这样您就不必在每个文件中编写代码。