【问题标题】:Flutter primarySwatch changes text colors and icon colorsFlutter primarySwatch 更改文本颜色和图标颜色
【发布时间】:2021-08-22 08:15:44
【问题描述】:

我目前正在开始在 Flutter 中使用主题。我还没有完全理解primarySwatch。

我正在 MaterialApp 类中设置应用程序范围的主题。我想更改primarySwatch,所以我在应用程序中使用的所有按钮都具有相同的颜色。当我使用primarySwatch: Colors.blue 时,按钮内、appBar 内等的文本和图标都是白色的。当我使用primarySwatch: Colors.orange 时,文本是黑色的。我发现有“亮”和“暗”的颜色,可能据此,文本颜色从白色变为黑色。但是有没有办法使用“明亮”的颜色并且仍然有白色的文本和图标而不覆盖所有它们?

【问题讨论】:

    标签: flutter themes


    【解决方案1】:

    编辑:我没有看到问题是“不覆盖所有问题”

    您可能想在您的ThemeData 中创建一个TextButtonThemeData,如下所示:

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          debugShowCheckedModeBanner: false,
          theme: ThemeData(
            textButtonTheme: TextButtonThemeData(
              style: ButtonStyle(
                textStyle: MaterialStateProperty.all<TextStyle>(
                  TextStyle(color: Colors.white),
                ),
              ),
            ),
          ),
          title: 'Flutter Demo',
          home: MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
    

    【讨论】:

    • 所以这意味着我必须再次覆盖每个文本颜色,对吗?这实际上是我想要避免的。
    • 很抱歉,我刚刚重读了您的问题,发现我的答案不是您要求的。
    • @Apri 使用 pub.dev/packages/theme_provider 怎么样?大多数覆盖已经完成,您只需为每个主题选择两种颜色?
    • theme_provider 还将ThemeData 与primarySwatch 一起使用。我的问题不是在主题之间切换。我的问题是,将 primarySwatch 设置为某些颜色也会将许多小部件的文本颜色从白色更改为黑色,这是我想要避免的。
    猜你喜欢
    • 2021-08-08
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    相关资源
    最近更新 更多