Flutter笔记(三):设置白色状态栏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter笔记(三):设置白色状态栏相关的知识,希望对你有一定的参考价值。

参考技术A 在App设计中状态栏纯色的这种设计很常见,但是如果状态栏需要为白色的时候就必须为黑色字体。在android中已经有很多成熟的方案来处理这种情况,那我们现在看看在Flutter中这种情况该怎么处理。

这里的ThemeData即为控制App的主题,primarySwatch设置即可控制主题的各类颜色,但是这里的颜色是需要MaterialColor,但是纯色种的黑色和白色不是MaterialColor。所以不能设置primarySwatch为Colors.white。
注:MaterialColor包含以下这些

那么就只能使用其他方式设置主题为白色。即为设置

此时我们可以看到App的状态栏如下所示(Android)

虽然AppBar变成了白色,但是状态栏是灰色显然不是我们想要的。
尝试设置文字颜色,AppBar的Brightness有两种模式light和dark

这个和SystemUiOverlayStyle的light和dark刚好相反

然后设置状态栏颜色

设置为红色之后,得到以下的样式,可以看到状态栏为红色了,文字为白色

那么接下来我们只需要将状态栏设置为白色或者透明,状态栏文字设置为黑色。

最后得到以下视图

注:使用PreferredSize包裹,可以更得心应手哦!

SystemUiOverlayStyle在设置时其实有很多系统或者版本的限制

[Flutter]使用主题
flutter设置沉浸式状态栏

https://github.com/leiyun1993/FlutterDemo-GankIO )

如何使用 Flutter 更改状态栏颜色?

【中文标题】如何使用 Flutter 更改状态栏颜色?【英文标题】:How to change status bar color with Flutter? 【发布时间】:2021-02-04 02:05:44 【问题描述】:

大家晚上好。

我有问题。我已经颤抖了很长一段时间了。这里我有两个 AScreen 和 BScreen 屏幕。对于 AScreen,我想要一个带有黑色图标的白色状态栏。而对于 BScreen 则有一个带有白色图标的红色状态栏。如何做到这一点??

我在屏幕 A 上使用 flutter_statusbarcolo 状态栏为红色 我导航到屏幕 B 状态栏为白色但当我返回屏幕 A 时状态栏保持白色(屏幕 B 的颜色)

【问题讨论】:

请提供最少的代码示例。 【参考方案1】:

由于您想在每个屏幕上更改此设置,请在您的 appBar 上执行此操作,而不是屏幕的 Scaffold

使用

appBar: AppBar(
  backgroundColor: Colors.red, // status bar color
  brightness: Brightness.light, // status bar brightness
)

【讨论】:

【参考方案2】:
AnnotatedRegion<SystemUiOverlayStyle>(value: SystemUiOverlayStyle(statusBarColor:Colors.white,),child: Scaffold(),)

仅将其效果应用于您包装的小部件。

【讨论】:

我检查了这个。除非您的屏幕包含 Appbar,否则它应该可以工作,因为 appbar 会覆盖其他样式! 是的,我当然有一个 appBar,我希望它与我的状态栏颜色相同 我在屏幕 A 上使用 flutter_statusbarcolo 状态栏为红色 我导航到屏幕 B 状态栏为白色但当我返回屏幕 A 时状态栏保持白色(屏幕 B)

以上是关于Flutter笔记(三):设置白色状态栏的主要内容,如果未能解决你的问题,请参考以下文章

flutter修改状态栏字体颜色

如何使用 Flutter 更改状态栏颜色?

iOS状态栏---学习笔记六

状态栏中图标的颜色 (Flutter)

如何在 iOS 7 上将状态栏内容颜色设置为白色

Flutter 状态栏完美攻略,不要找了,都在这里了