我正在尝试使用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
brightness
这是不可能的。
CupertinoNavigationBar使用此方法_wrapWithBackground()定义状态栏是亮还是暗,因此SystemChrome.setSystemUIOverlayStyle()永远不会考虑您使用的设置。
_wrapWithBackground()
SystemChrome.setSystemUIOverlayStyle()
一个典型的解决方案是创建自己的扩展导航栏CupertinoNavigationBar,但这在这种情况下不容易实现,因为CupertinoNavigationBar它具有私有的State并调用其他私有的类和方法。
State
实际上,CupertinoNavigationBar如果与进行比较,则设计不佳AppBar,因为它考虑了三个属性来定义其亮度:
AppBar
ThemeData.AppBarTheme.brightness
ThemeData.primaryColorBrightness
请注意,有一个属性可以指定Cupertino Widgets的亮度,该属性是CupertinoThemeData.brightness,但(在奇怪的情况下)不将其视为inside _wrapWithBackground()。
CupertinoThemeData.brightness
已经有一个问题了。您应该等待Flutter团队的回应,但是在此之前,您可以使用此替代方法。