如何根据设置的主题更改flutter中的状态栏图标和文本颜色?

2024-03-05

如何在没有任何第三方插件的情况下更新状态栏图标的颜色?

在我的主题类中,我有一个函数,我正在其中尝试下面的代码,但尚未取得结果:

截至目前的主题代码:


// custom light theme for app
  static final customLightTheme = ThemeData.light().copyWith(
    brightness: Brightness.light,
    primaryColor: notWhite,
    accentColor: Colors.amberAccent,
    scaffoldBackgroundColor: notWhite,
    primaryTextTheme: TextTheme(
      title: TextStyle(
        color: Colors.black
      ),

    ),
    appBarTheme: AppBarTheme(
      iconTheme: IconThemeData(color: Colors.black),
      elevation: 0.0,
    )
  );

  // custom dark theme for app
  static final customDarkTheme = ThemeData.dark().copyWith(
    brightness: Brightness.dark,
    primaryColor: Colors.black,
      accentColor: Colors.orange,
      scaffoldBackgroundColor: Colors.black87,
      primaryTextTheme: TextTheme(
        title: TextStyle(
            color: Colors.white
        ),

      ),
      appBarTheme: AppBarTheme(
        iconTheme: IconThemeData(color: Colors.white),
        elevation: 0.0,
      ),

  );


主题变换器代码:


// set theme for the app
   setTheme(ThemeData theme) {
     _themeData = theme;

     if(_themeData == ThemeChanger.customLightTheme){
       SystemChrome.setSystemUIOverlayStyle(
         const SystemUiOverlayStyle(
           statusBarColor: Colors.white,
           systemNavigationBarColor: Colors.white,
           systemNavigationBarDividerColor: Colors.black,
           systemNavigationBarIconBrightness: Brightness.dark,
         ),
       );
     } else {
       SystemChrome.setSystemUIOverlayStyle(
         const SystemUiOverlayStyle(
           statusBarColor: Colors.blue,
           systemNavigationBarColor: Colors.blue,
           systemNavigationBarDividerColor: Colors.red,
           systemNavigationBarIconBrightness: Brightness.light,
         ),
       );
     }

     notifyListeners();
   }


这不是我想要的,因为我不想要第三方解决方案。

状态栏中图标的颜色(Flutter) https://stackoverflow.com/questions/57974569/icons-color-in-status-bar-flutter

目前,我在主题更改时得到白色/浅色主题的黑色图标,以及深色/黑色主题的黑色图标(应该是白色图标)。休息一切正常。


您可以通过调用来设置状态栏主题setSystemUIOverlayStyle具有所需的主题。

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark);

or

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);

UPDATE:

您可以指定自己的属性,例如,

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
  statusBarColor: Colors.white
));

检查可用属性here https://api.flutter.dev/flutter/services/SystemUiOverlayStyle-class.html.


注:对于light应用程序的主题,使用dark重叠,反之亦然。还要确保你import 'package:flutter/services.dart';

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据设置的主题更改flutter中的状态栏图标和文本颜色? 的相关文章

随机推荐

  • iOS 有可自定义的进度条吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 UIProgressView 不允许任何自定义 我知道这并不复杂 但我仍然更喜欢使用开源解决方案 而不是重新发明自己的轮子 有吗 有很多在可可控制 h
  • 选择每个不同行的计数(mysql 和 php)

    我正在使用 mysql 和 php 我有一张只有一列的表格 我可以通过以下方式显示唯一行 select distinct id from id table 这可能会显示 1 2 3 5 我想做的是显示 1 2 等的数量 我可以 select
  • cmake:如何检查预处理器是否已定义

    我无法得到cmake测试是否已定义预处理器 例如 cmake minimum required VERSION 2 8 9 project cmake test add definitions DOS LINUX if NOT
  • CMake:生成单个头文件

    我目前正在编写一个实用程序库 该库将附带预编译的 DLL 文件和库的头文件 到目前为止 有一大堆头文件 但我想将它们全部编译成一个头文件 有点像只预处理 include指令 我想知道是否以及如何使用 CMake 来实现这样的一代 真挚地 莱
  • PHP、Memcached 可从命令行运行,但不能从 Web 运行

    我在 Centos 6 4 上安装了 PHP 5 3 3memcached so扩展名 httpd 运行版本为 2 2 15 26 这是我的index php mc new Memcached mc gt addServer 127 0 0
  • 如何阻止 cURL 使 PHP 会话陷入僵局?

    所以基本上 我使用 cURL 来调用我无法在 PHP 中本地实现的 API 但当我拨打电话时 我的 PHP 会话就会陷入僵局 我无法从浏览器中的另一个选项卡连接到我的网站 如果我删除会话cookie 我就可以正常连接 以前 当我在 cURL
  • 使用绑定填充路径数据属性时路径位置不正确

    我有一个硬编码Path形状在a的内部Canvas 我想在这个画布上有多个形状 所以我尝试将每个形状的信息推入一个类中 然后使用ItemsControl渲染每一个 当我使用ItemsControl 每个形状的位置都不正确 上方和左侧太远 显示
  • 在 Rust 中,如何从 HashMap 的键创建 HashSet?

    我有两个HashMaps 并想要计算键的交集 是否有可能构建一个HashSet出于任何HashMap keys 回报 例如 use std collections HashSet HashMap fn main let mut map1 H
  • MongoDB C# - 如何将任意 JSON 文档保存为动态类型?

    我正在尝试编写一个通用 Web Api 控制器 它允许我将 JSON 文档保存到集合中 而无需指定 C 类型 我尝试将代码压缩为要点 public class PassThroughController ApiController Rout
  • 协议字典 Swift 4

    我有一个名为 playable 的协议 需要实现func play Class Damage and DrawACard均符合协议 protocol Playable class func play game Game value Int
  • 在 MAC 控制台上使用 Python 2.7.15,virtualenv 创建具有不同版本 Python 的环境

    这是我在 Mac 中的控制台的摘录 您可以看到控制台上的 Python 是 2 7 15 但在环境中它变成了 2 7 10 这是一个旧版本 有关原因以及如何修复它的任何帮助将受到热烈欢迎 dhcp 18 57 Wakeup6 jbs pyt
  • Visual Studio 2017更新后代码颜色问题

    我以前用 VS 的深色主题很舒服 今天 我将 VS 更新为v 15 2 26430 4 但突然遇到了视觉问题 深色模式下代码的颜色很糟糕 我几乎看不清它们 有办法解决吗 谢谢 我找到了一些解决方法 通过取消选中Enable rich cli
  • 张量流将标签向量操纵为“多个热编码器”

    是否有可能 以一种很好的方式 在张量流中实现下一个功能 假设我们有一个密集的标签向量 labels 0 3 1 2 0 我需要制作一个 多个热编码器 意思是 对于每一行 我需要 1 到标签索引减 1 所以所需的结果将是 0 0 0 1 1
  • 出现错误 400 / 404 - HttpUtility.UrlEncode 未编码完整字符串?

    为什么以下 URL 会出现以下 IIS 错误 A http 192 168 1 96 cms View aspx Show Small test http 192 168 1 96 cms View aspx Show Small test
  • 如何在TThread中设置堆栈大小?

    如何设置自定义堆栈大小TThread 我正在尝试重新引入构造函数TThread但它说ThreadProc不见了 但它就在那里System Classes type TThreadHelper class helper for TThread
  • PHP - 访问 SPAN 值

    我是 PHP 新手 但我正在为订单表单编写电子邮件脚本 我拥有所有值以及表单中没有的内容 其中包含一个跨度用于 javascript 访问客户端的文本元素 我需要做的就是在发布时访问这些跨度值 HTML
  • 图灵完整性需要什么逻辑门?

    我儿子最近在玩小小大星球2 我注意到游戏编辑器允许与门 或门和非门 它是图灵完备吗 如果是这样 任何人都可以推荐一个学习资源 将这些原语转换成更高级别的条件 if 之类的东西吗 你不需要并且one ofAND 或 OR 能够完成所有二进制逻
  • 在 emacs 中调试 python 程序

    如何在 emacs 中调试 python 程序 我在用着python mode el 我发现参考文献建议 import pdb pdb set trace 但我不知道如何使用它 Type M x cd将目录更改为您要调试的程序的位置 类型M
  • headerenricher Spring 集成和 java dsl

    我使用 Spring Integration 和 java dsl 规范来实现我的 IntegrationFlow 我想使用自定义标头丰富器将一些文件名添加到标头 它将类似于 public class FileHeaderNamingEnr
  • 如何根据设置的主题更改flutter中的状态栏图标和文本颜色?

    如何在没有任何第三方插件的情况下更新状态栏图标的颜色 在我的主题类中 我有一个函数 我正在其中尝试下面的代码 但尚未取得结果 截至目前的主题代码 custom light theme for app static final customL