如何更改状态文本栏颜色
问题内容:
我正在尝试使用CupertinoNavigationBar将状态栏文本颜色放到Brightlight Light中
我已经尝试过将带有statusBarColor和亮度的SystemUiOverlayStyle放入主屏幕,但是不起作用
状态栏中的文本必须为白色
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
它具有私有的State
并调用其他私有的类和方法。
实际上,CupertinoNavigationBar
如果与进行比较,则设计不佳AppBar
,因为它考虑了三个属性来定义其亮度:
brightness
可以通过构造函数传递的参数;ThemeData.AppBarTheme.brightness
;ThemeData.primaryColorBrightness
。
请注意,有一个属性可以指定Cupertino
Widgets的亮度,该属性是CupertinoThemeData.brightness
,但(在奇怪的情况下)不将其视为inside
_wrapWithBackground()
。
已经有一个问题了。您应该等待Flutter团队的回应,但是在此之前,您可以使用此替代方法。