如何更改状态文本栏颜色

时间:2019-06-12 22:42:46

标签: ios flutter

我正在尝试使用CupertinoNavigationBar将状态栏文本颜色放入Brightness Light

我已经尝试将带有statusBarColor和亮度的SystemUiOverlayStyle放在主菜单中,但是不起作用 That text in status bar need be white

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

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

3 个答案:

答案 0 :(得分:2)

https://github.com/flutter/flutter/issues/41067#issuecomment-571689955 (iOS暗模式和Android)

Info.plist

中添加行
lr = TFPiecewiseSchedule([[10, 1e-3], [20, 1e-4]])
l = layers.Dense(10)
opt = tf.keras.optimizers.Adam(lr)
@tf.function
def f(x):
  ...

然后更改状态栏?

<key>UIUserInterfaceStyle</key>
<string>Light</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

答案 1 :(得分:1)

这是不可能的。

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

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

实际上,如果您将CupertinoNavigationBarAppBar进行比较,则其设计会考虑三个属性来定义其亮度:

    可以在构造函数中传递的
  1. brightness变量;
  2. ThemeData.AppBarTheme.brightness;
  3. ThemeData.primaryColorBrightness

请注意,有一个属性可以指定Cupertino小部件的亮度,CupertinoThemeData.brightness,但是(奇怪地)在_wrapWithBackground()内部没有考虑。

已经有一个issue。您应该等待Flutter团队的回应,但在此之前,您可以使用this解决方法。

答案 2 :(得分:0)

尝试将亮度设置为暗。在AppBar中,如果将“亮度”设置为light,它将使状态栏文本变为黑色。

statusBarBrightness: Brightness.dark,