Flutter-How 在深色模式下更改状态栏文本颜色?
Flutter-How to change the Statusbar text color in Dark Mode?
希望在iOS13深色模式下控制状态栏文字颜色。我可以通过设置 Scaffold 的 AppBar 属性 "brightness" 来改变状态栏的颜色。
代码如下:
return Scaffold(
appBar: AppBar(
brightness: Brightness.light, //<--Here!!!
title: Text(widget.title),
),
...
这样的努力:
灯光亮度:
暗亮度:
但是当我启用模拟器的深色模式时,该方法不起作用。
打开模拟器的"Dark Appearance":
打开"Dark Appearance"后状态栏文字颜色无法再通过该方法改变,只是白色(亮度模式)。
我试过那些改变状态栏文本颜色的方法:
方法一:
void main() {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown
]);
runApp(MyApp());
}
方法二:
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle.light,
child: Material(
child: Scaffold(
appBar: AppBar(
brightness: Brightness.light,
title: Text(widget.title),
),
body: Center(
但是他们两个都不行。
希望得到您的帮助!谢谢。
如果您的应用是 MaterialApp,您可以设置 MaterialApp 的 darkTheme
属性:
return new MaterialApp(
darkTheme: ThemeData.dark(),
);
这是文档的 link:https://api.flutter.dev/flutter/material/MaterialApp-class.html
如果它不能解决您的问题,您可以使用以下方法创建自己的深色主题:
return new MaterialApp(
darkTheme: ThemeData(
// Your theme config
),
);
Link 到 ThemeData 文档:https://api.flutter.dev/flutter/material/ThemeData-class.html
我发现我的问题和flutter一样Issue#41067
---Flutter 不会自动将设备上的状态栏图标更改为黑色 运行 iOS 13.0 在深色模式下它仅在 iOS 13 上的深色模式时才会这样做关闭 #41067"
并且Issue状态为Opening,希望尽快解决。
下面的问题 link:
flutter issue#41067
import 'package:flutter_statusbarcolor/flutter_statusbarcolor.dart';
这对我有用。如果你想要黑色文本使用:
@override
Widget build(BuildContext context) {
FlutterStatusbarcolor.setStatusBarWhiteForeground(false);
return MaterialApp();
}
对于白色文本使用:
@override
Widget build(BuildContext context) {
FlutterStatusbarcolor.setStatusBarWhiteForeground(true);
return MaterialApp();
}
在 Info.plist 中的 ios/Runner 下添加
<key>UIUserInterfaceStyle</key>
<string>Light</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
对我有用。
首先转到 ios/Runner 文件夹。接下来打开 info.plist 并将以下行添加到 Dict 部分。
<key>UIUserInterfaceStyle</key>
<string>Light</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
接下来。确保在 MaterialApp 的主题设置中有这些行:
...
MaterialApp(
themeMode: ThemeMode.light, // Change it as you want
theme: ThemeData(
primaryColor: Colors.white,
primaryColorBrightness: Brightness.light,
brightness: Brightness.light,
primaryColorDark: Colors.black,
canvasColor: Colors.white,
// next line is important!
appBarTheme: AppBarTheme(brightness: Brightness.light)),
darkTheme: ThemeData(
primaryColor: Colors.black,
primaryColorBrightness: Brightness.dark,
primaryColorLight: Colors.black,
brightness: Brightness.dark,
primaryColorDark: Colors.black,
indicatorColor: Colors.white,
canvasColor: Colors.black,
// next line is important!
appBarTheme: AppBarTheme(brightness: Brightness.dark)),
...
祝你好运!
P.S。
你不必在这里设置亮度!!不再:)
Scaffold(
appBar: AppBar(
brightness: Brightness.light, //<--Here!!!
title: Text(widget.title),
),
更改状态栏文本 color/icon brightness.flutter 2.2.3
材质应用(
标题:'Flutter Demo',
主题:主题数据(
appBarTheme: Theme.of(上下文).appBarTheme.copyWith(
亮度:Brightness.dark,
systemOverlayStyle: SystemUiOverlayStyle(
statusBarIconBrightness: Brightness.light,
),
),
primarySwatch: Colors.blue,
),
主页:我的主页(标题:'Flutter Demo Home Page'),
);
在我的例子中,我想在我的浅色主题应用程序的状态栏中使用深色字体。问题是我的应用栏的背景颜色是透明的,所以状态栏的默认字体颜色是白色(我尝试将应用栏的颜色设置为白色,瞧瞧——状态栏文本字体是黑色的)。
因为我想保持我的透明状态栏,我的解决方案是像这样将 systemOverlayStyle 添加到我的主题的 appBarTheme 中。:
AppBarTheme(
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.light,
),
app_bar_theme.dart 文件在 brightness 的弃用说明中告诉我这个解决方案:
@Deprecated(
'This property is no longer used, please use systemOverlayStyle instead. '
'This feature was deprecated after v2.4.0-0.0.pre.',
)
this.brightness,
希望在iOS13深色模式下控制状态栏文字颜色。我可以通过设置 Scaffold 的 AppBar 属性 "brightness" 来改变状态栏的颜色。 代码如下:
return Scaffold(
appBar: AppBar(
brightness: Brightness.light, //<--Here!!!
title: Text(widget.title),
),
...
这样的努力:
灯光亮度:
暗亮度:
但是当我启用模拟器的深色模式时,该方法不起作用。
打开模拟器的"Dark Appearance":
打开"Dark Appearance"后状态栏文字颜色无法再通过该方法改变,只是白色(亮度模式)。
我试过那些改变状态栏文本颜色的方法:
方法一:
void main() {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown
]);
runApp(MyApp());
}
方法二:
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle.light,
child: Material(
child: Scaffold(
appBar: AppBar(
brightness: Brightness.light,
title: Text(widget.title),
),
body: Center(
但是他们两个都不行。
希望得到您的帮助!谢谢。
如果您的应用是 MaterialApp,您可以设置 MaterialApp 的 darkTheme
属性:
return new MaterialApp(
darkTheme: ThemeData.dark(),
);
这是文档的 link:https://api.flutter.dev/flutter/material/MaterialApp-class.html
如果它不能解决您的问题,您可以使用以下方法创建自己的深色主题:
return new MaterialApp(
darkTheme: ThemeData(
// Your theme config
),
);
Link 到 ThemeData 文档:https://api.flutter.dev/flutter/material/ThemeData-class.html
我发现我的问题和flutter一样Issue#41067 ---Flutter 不会自动将设备上的状态栏图标更改为黑色 运行 iOS 13.0 在深色模式下它仅在 iOS 13 上的深色模式时才会这样做关闭 #41067"
并且Issue状态为Opening,希望尽快解决。 下面的问题 link: flutter issue#41067
import 'package:flutter_statusbarcolor/flutter_statusbarcolor.dart';
这对我有用。如果你想要黑色文本使用:
@override
Widget build(BuildContext context) {
FlutterStatusbarcolor.setStatusBarWhiteForeground(false);
return MaterialApp();
}
对于白色文本使用:
@override
Widget build(BuildContext context) {
FlutterStatusbarcolor.setStatusBarWhiteForeground(true);
return MaterialApp();
}
在 Info.plist 中的 ios/Runner 下添加
<key>UIUserInterfaceStyle</key>
<string>Light</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
对我有用。
首先转到 ios/Runner 文件夹。接下来打开 info.plist 并将以下行添加到 Dict 部分。
<key>UIUserInterfaceStyle</key>
<string>Light</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
接下来。确保在 MaterialApp 的主题设置中有这些行:
...
MaterialApp(
themeMode: ThemeMode.light, // Change it as you want
theme: ThemeData(
primaryColor: Colors.white,
primaryColorBrightness: Brightness.light,
brightness: Brightness.light,
primaryColorDark: Colors.black,
canvasColor: Colors.white,
// next line is important!
appBarTheme: AppBarTheme(brightness: Brightness.light)),
darkTheme: ThemeData(
primaryColor: Colors.black,
primaryColorBrightness: Brightness.dark,
primaryColorLight: Colors.black,
brightness: Brightness.dark,
primaryColorDark: Colors.black,
indicatorColor: Colors.white,
canvasColor: Colors.black,
// next line is important!
appBarTheme: AppBarTheme(brightness: Brightness.dark)),
...
祝你好运!
P.S。 你不必在这里设置亮度!!不再:)
Scaffold(
appBar: AppBar(
brightness: Brightness.light, //<--Here!!!
title: Text(widget.title),
),
更改状态栏文本 color/icon brightness.flutter 2.2.3
材质应用( 标题:'Flutter Demo', 主题:主题数据( appBarTheme: Theme.of(上下文).appBarTheme.copyWith( 亮度:Brightness.dark, systemOverlayStyle: SystemUiOverlayStyle( statusBarIconBrightness: Brightness.light, ), ), primarySwatch: Colors.blue, ), 主页:我的主页(标题:'Flutter Demo Home Page'), );
在我的例子中,我想在我的浅色主题应用程序的状态栏中使用深色字体。问题是我的应用栏的背景颜色是透明的,所以状态栏的默认字体颜色是白色(我尝试将应用栏的颜色设置为白色,瞧瞧——状态栏文本字体是黑色的)。 因为我想保持我的透明状态栏,我的解决方案是像这样将 systemOverlayStyle 添加到我的主题的 appBarTheme 中。:
AppBarTheme(
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.light,
),
app_bar_theme.dart 文件在 brightness 的弃用说明中告诉我这个解决方案:
@Deprecated( 'This property is no longer used, please use systemOverlayStyle instead. ' 'This feature was deprecated after v2.4.0-0.0.pre.', ) this.brightness,