如何更新状态栏图标的颜色没有任何第三方插件?
在我的主题类中,我有一个函数,我正在尝试下面的代码,但尚未取得结果:
截至目前的主题代码:
// 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();
}
这不是我想要的,因为我不想要第三方解决方案。
Icon's color in status bar (Flutter)
目前,我得到的黑色图标在白色/轻的主题,也黑色图标(这应该是白色图标)在黑暗/黑色主题的主题变化。休息是所有工作良好。
9条答案
按热度按时间oxiaedzo1#
更新(Flutter2.4.0)
AnnotatedRegion
或AppBar.brightness
,因为它们已被弃用,请使用以下代码:**定制更少:
*更多自定义:
ukxgm1gy2#
我还没有找到一种方法来设置状态栏图标的颜色,但对我来说,它的工作设置属性
systemStatusBarContrastEnforced
为true
。k0pti3hp3#
这个改变主题的答案对我不起作用,但我用这个。我知道两者是一样的东西,但这样,我们也可以使用颜色和图标主题。
xxls0lw84#
更改状态栏图标颜色(为白色)的步骤。
将此**SystemChrome...添加到您的void main()**中。在此之前,不要忘记
import 'package:flutter/services.dart';
。在此之后,如果您将
Scaffold()
用于屏幕/页面,则在**AppBar()**中添加brightness: Brightness.dark,
行,如下所示:那好吧。
w46czmvw5#
如果您正在使用的主题建设者为整个应用程序有新的方式来改变亮度(图标颜色)是白色或黑色如下
sr4lhrrt6#
如果你使用的是AppBar,你可以设置
brightness
属性,这样状态栏的图标就会变成白色。rkttyhzu7#
我发现最好的方法是通过AppBar小部件来实现,如果你没有在屏幕上使用Appbar,你可以通过实现虚拟透明Appbar来实现:
pgvzfuti8#
您可以通过使用所需主题调用
setSystemUIOverlayStyle
来设置状态栏主题。或
可以指定自己的属性,例如,
检查可用属性here。
light
主题,请使用dark
覆盖,反之亦然。此外,请确保您使用import 'package:flutter/services.dart';
*希望能有所帮助!
sauutmhj9#
如果设置的
SystemUiOverlayStyle
没有被AppBar
等其他小部件覆盖,则接受的答案有效。更新
既然很多人都有这个问题,加上一个答案,涵盖了我能想到的所有案例。
对于所有情况,请根据需要使用
systemOverlayStyle
。灯光主题
黑暗主题
自定义
仅覆盖必需的属性。前3个用于导航栏,其余3个用于状态栏。
1.默认情况整个应用中的恒定系统覆盖样式,不包含干扰系统UI覆盖样式的应用栏和其他小部件。
将此代码添加到
build
方法内应用的根小部件。1.具有恒定系统覆盖样式的应用在整个应用中使用应用栏的恒定主题。
如果有没有应用程序栏的屏幕,添加选项1中给出的代码,然后再添加这个。
1.应用的应用栏具有不同的系统覆盖样式每个应用栏都具有不同的系统覆盖样式。
应用程序栏:应用程序栏(标题:常量文本("标题文本"),系统覆盖样式:系统UI叠加样式. light,)
2.4.0-0.0
以下版本的旧答案。AppBar
中不建议使用brightness
属性。此功能在v2.4.0 - 0.0.pre之后已弃用
根据需要使用
Brightness.light
或Brightness.dark
。