我正在尝试使用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 的类和方法。
实际上,如果将CupertinoNavigationBar
与AppBar
进行比较,那么brightness
的设计很差,后者考虑了三个属性来定义其亮度:
可以通过构造函数传递的
ThemeData.AppBarTheme.brightness
参数; ThemeData.primaryColorBrightness
; CupertinoThemeData.brightness
。 注意,有一个属性可以指定Cupertino Widgets的亮度,它是
_wrapWithBackground()
,但在ojit_code内部却(通常)不考虑它。已经有一个issue了。您应该等待Flutter团队的回应,但在此之前,您可以使用this解决方法。
关于ios - 如何更改状态文本栏颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56571241/