首页 > 解决方案 > Flutter 2:颜色问题

问题描述

我最近将我的代码基础切换到了 Flutter 2。

现在我面临一些主题(颜色)的问题: 在此处输入图像描述

  1. 设备状态栏图标的颜色为黑色
  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
}
  1. 你知道为什么在使用新的 Flutter 版本时描述的颜色不会变成白色吗?
  2. 你知道我能做些什么来解决这个问题吗?也许改变另一个颜色领域ThemeData

我唯一的想法是删除cardColor更改,这会产生一个白色的上下文菜单。但这并不能解决状态栏的文本颜色问题。

标签: flutteruser-interfacecolorsthemes

解决方案


唯一的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 中添加来解决您的问题。

截屏


推荐阅读