flutter - Flutter 2:颜色问题
问题描述
我最近将我的代码基础切换到了 Flutter 2。
- 设备状态栏图标的颜色为黑色
- TextField 的上下文菜单项的颜色为黑色
以前它们是白色的,所以在新的 Flutter 版本中似乎有所改变。
我正在使用ThemaData.dark()
和一些特定的颜色。特别是我设置cardColor
为深灰色来为TextField
的上下文菜单的背景着色:
ThemeData buildTheme() {
final ThemeColors colors = themeColors();
final ThemeData base = ThemeData.dark();
return ThemeData(
scaffoldBackgroundColor: colors.primaryBackground(), // == dark grey
primaryColor: colors.primaryBackground(), // == dark grey
accentColor: colors.accent(), // == orange
textTheme: base.textTheme,
buttonTheme: base.buttonTheme.copyWith(
buttonColor: colors.accent(), // == orange
textTheme: ButtonTextTheme.primary
canvasColor: colors.inputBackground(), // == dark grey
inputDecorationTheme: base.inputDecorationTheme.copyWith(
hintStyle: TextStyle(color: colors.textFieldHintText()), // == grey
fillColor: colors.inputBackground(), // == dark grey
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: colors.focused())), // == green
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: colors.accent())), // == orange
),
unselectedWidgetColor: colors.accent(), // == orange
cardColor: colors.messageBackground()); // == dark grey
}
- 你知道为什么在使用新的 Flutter 版本时描述的颜色不会变成白色吗?
- 你知道我能做些什么来解决这个问题吗?也许改变另一个颜色领域
ThemeData
?
我唯一的想法是删除cardColor
更改,这会产生一个白色的上下文菜单。但这并不能解决状态栏的文本颜色问题。
解决方案
唯一的statusBar
,您可以在定义时设置图标的亮度AppBar
:
AppBar(
backwardsCompatibility: false,
backgroundColor: Colors.grey.shade800,
systemOverlayStyle: SystemUiOverlayStyle(
statusBarColor: Colors.grey.shade800,
statusBarIconBrightness: Brightness.light,
),
),
但是使用此设置,您的应用栏将无法从您的主题中获取颜色。
您必须从那里设置背景颜色和 statusBarColor。
我确实设置了 Colors.grey.shade800 因为我没有访问你的颜色。
brightness: Brightness.dark
对于系统 UI,例如复制/粘贴,您可以通过在 ThemeData 中添加来解决您的问题。
推荐阅读
- mysql - 为什么ansible无法连接MySql?
- katalon-studio - Katalon Analytics 未显示从测试集合执行的所有测试套件的结果
- c# - 从可观察集合中绑定组合框项目源时遇到问题
- java - 使用 ContentCachingRequestWrapper 后缺少所需的请求正文
- javascript - 在服务器上创建 Zip 存档并在客户端下载
- jena - 有谁知道如何让 tdb2.dump 命令真正做任何事情
- sql - 在 oracle sql 中从包含 XML 格式字符串的列中获取子字符串
- apache-spark - 如何将多个列作为参数传递给 Spark 数据框
- express - Vue.js devServer.proxy 的问题
- r - 用 R 中的另一个特定模式重命名多个文件的特定模式