如何根据主题更改状态栏/导航栏颜色/亮度?

Posted

技术标签:

【中文标题】如何根据主题更改状态栏/导航栏颜色/亮度?【英文标题】:How to change status bar / navigation bar color/brightness with respective to theme? 【发布时间】:2022-01-20 02:58:27 【问题描述】:

使用 Getx 进行主题化,但在根据浅色/深色主题更改状态栏图标亮度时遇到一些问题。

我找到了两种方法。

第一

 WidgetsBinding.instance!.addPostFrameCallback((_) 
   SystemChrome.setSystemUIOverlayStyle(overlayStyle);
 );

这需要在 initState() 期间调用。

第二

AnnotatedRegion<SystemUiOverlayStyle>()

这个小部件也可以正常工作。 有没有其他方法可以实现这个目的?

附:使用 Flutter 2.8.0

【问题讨论】:

【参考方案1】:

您可以使用ThemeData根据暗/亮来改变整个应用的亮度。

您的所有主题自定义都可以使用它来完成。下面是亮度和原色的示例。

ThemeData(
    brightness: Brightness.dark, // or Brightness.light (for dark or light)
    // .........
    primarySwatch: Colors.orange, // for changing primary color
),

【讨论】:

以上是关于如何根据主题更改状态栏/导航栏颜色/亮度?的主要内容,如果未能解决你的问题,请参考以下文章

在iOS 7中隐藏导航栏时,如何更改状态栏的颜色?

iOS 7隐藏导航栏时如何更改状态栏的颜色?

Flutter系统导航栏和状态栏颜色[重复]

视图更改时反应导航和状态栏颜色闪烁

如何在 iOS 7 上更改状态栏背景颜色和文本颜色?

如何使用swift3增加导航栏的高度并更改xcode 8中状态栏的颜色?