CupertinoNavigationBar

CupertinoNavigationBar

我正在尝试使用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(),则没有

最佳答案

更新资料
现在CupertinoNavigationBar也具有brightness属性。
旧答案
这是不可能的。CupertinoNavigationBar使用 _wrapWithBackground() 方法定义状态栏是亮还是暗,因此永远不会考虑使用SystemChrome.setSystemUIOverlayStyle()进行的设置。
典型的解决方案是创建扩展CupertinoNavigationBar的自己的导航栏,但是在这种情况下,这样做不容易,因为CupertinoNavigationBar具有 private 的State并调用其他 private 的类和方法。
实际上,如果将CupertinoNavigationBarAppBar进行比较,那么brightness的设计很差,后者考虑了三个属性来定义其亮度:

可以通过构造函数传递的

  • ThemeData.AppBarTheme.brightness参数;
  • ThemeData.primaryColorBrightness;
  • CupertinoThemeData.brightness

  • 注意,有一个属性可以指定Cupertino Widgets的亮度,它是_wrapWithBackground(),但在ojit_code内部却(通常)不考虑它。
    已经有一个issue了。您应该等待Flutter团队的回应,但在此之前,您可以使用this解决方法。

    关于ios - 如何更改状态文本栏颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56571241/

    10-12 06:07