如何更改状态文本栏颜色

Luc*_*sti 2 ios flutter

我正在尝试使用 CupertinoNavigationBar 将状态栏文本颜色置于 Brightness Light 中

我已经尝试将 SystemUiOverlayStyle 与 statusBarColor 和亮度放在主项中,但不起作用 状态栏中的文本需要为白色

void main() {
  SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
    systemNavigationBarColor: Colors.white,
    statusBarColor: Colors.white,
    statusBarBrightness: Brightness.light,
    statusBarIconBrightness: Brightness.light
  ));
  runApp(MyApp());
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试为 ios 和 android 创建 appbar,但我想将状态栏文本颜色设为 Light,我设置了一个条件,如果是 ios,我创建了 CupertinoNavigationBar(),如果是 android,我将普通的 AppBar(),如果只是具有亮度的 AppBar,他工作正常,但使用 CupertinoNavigationBar(),则不

Hug*_*sos 5

更新

现在CupertinoNavigationBar也有brightness房产。

旧答案

这是不可能的。

CupertinoNavigationBar使用 方法_wrapWithBackground()来定义状态栏是亮还是暗,因此SystemChrome.setSystemUIOverlayStyle()永远不会考虑您所做的设置。

一个典型的解决方案是创建自己的导航栏扩展CupertinoNavigationBar,但在这种情况下这并不容易,因为CupertinoNavigationBar有一个私有State并调用其他私有类和方法。

事实上,CupertinoNavigationBar如果与 相比AppBar,它的设计很糟糕,它考虑了三个属性来定义其亮度:

  1. brightness 可以通过构造函数传递的参数;
  2. ThemeData.AppBarTheme.brightness;
  3. ThemeData.primaryColorBrightness.

请注意,有一个属性来指定 Cupertino Widgets 的亮度,即CupertinoThemeData.brightness,但(奇怪)在 内没有考虑它_wrapWithBackground()

已经有这个问题了。您应该等待 Flutter 团队的响应,但在那之前您可以使用解决方法。