我正在尝试使用 CupertinoNavigationBar 将状态栏文本颜色置于 Brightness Light 中
我已经尝试将 SystemUiOverlayStyle 与 statusBarColor 和亮度放在主项中,但不起作用 状态栏中的文本需要为白色
void main() {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemNavigationBarColor: Colors.white,
statusBarColor: Colors.white,
statusBarBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light
));
runApp(MyApp());
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试为 ios 和 android 创建 appbar,但我想将状态栏文本颜色设为 Light,我设置了一个条件,如果是 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,但(奇怪)在 内没有考虑它_wrapWithBackground()。
已经有这个问题了。您应该等待 Flutter 团队的响应,但在那之前您可以使用此解决方法。
| 归档时间: |
|
| 查看次数: |
3137 次 |
| 最近记录: |