我希望在iOS 13暗模式下控制状态栏文本的颜色。我可以通过设置脚手架的AppBar属性“亮度”来更改状态栏颜色。 代码如下:
return Scaffold(
appBar: AppBar(
brightness: Brightness.light, //<--Here!!!
title: Text(widget.title),
),
...
这样的努力:
但是当我启用模拟器的 Dark Mode (黑暗模式)时,该方法不起作用。 打开模拟器的“深色外观”:
打开“深色外观”后,状态栏文本颜色无法通过该方法进行任何更改,只能是白色(亮度模式)。
我已经尝试过使用这些方法来更改状态栏文本的颜色:
方法1:
void main() {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown
]);
runApp(MyApp());
}
方法2:
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle.light,
child: Material(
child: Scaffold(
appBar: AppBar(
brightness: Brightness.light,
title: Text(widget.title),
),
body: Center(
但是他们都不行。
希望您的帮助!谢谢。
答案 0 :(得分:2)
我发现我的问题与颤抖 Issue#41067 ---“ Flutter不会在暗模式下运行iOS 13.0的设备上自动将状态栏图标更改为黑色,只有在关闭iOS 13的暗模式#41067 ”
并且Issue状态为Opening,所以希望它能尽快得到解决。 问题链接如下: flutter issue#41067
答案 1 :(得分:2)
在Info.plist中的ios / Runner下添加
<key>UIUserInterfaceStyle</key>
<string>Light</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
对我有用。
答案 2 :(得分:2)
首先转到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),
),
答案 3 :(得分:0)
如果您的应用是MaterialApp,则可以设置MaterialApp的darkTheme
属性:
return new MaterialApp(
darkTheme: ThemeData.dark(),
);
以下是文档的链接:https://api.flutter.dev/flutter/material/MaterialApp-class.html
如果不能解决问题,则可以使用以下方法创建自己的Dark主题:
return new MaterialApp(
darkTheme: ThemeData(
// Your theme config
),
);
链接到ThemeData文档:https://api.flutter.dev/flutter/material/ThemeData-class.html
答案 4 :(得分:0)
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();
}
答案 5 :(得分:0)
更改状态栏文字颜色/图标亮度.flutter 2.2.3
材料应用( title: 'Flutter 演示', 主题:主题数据( appBarTheme: Theme.of(context).appBarTheme.copyWith( 亮度:Brightness.dark, systemOverlayStyle: SystemUiOverlayStyle( statusBarIconBrightness: Brightness.light, ), ), 主要色板:Colors.blue, ), home: MyHomePage(title: 'Flutter Demo Home Page'), );