dart ThemeData primaryColor未更改appBar背景颜色

i86rm4rw  于 2023-06-19  发布在  其他
关注(0)|答案(4)|浏览(149)
class BMICalculator extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primaryColor: Colors.red,
      ),
      home: InputPage(),
    );

我正在学习这门课程:https://www.udemy.com/course/flutter-bootcamp-with-dart/
在主题部分,她使用了这段代码将AppBar变成了红色。我的代码没有显示任何错误,但是我的appBar仍然是默认主题。
这里的原色描述:https://api.flutter.dev/flutter/material/ThemeData-class.html
它没有说它是贬值的,也没有表明任何最近的变化。
我的问题不是“我怎样才能使我的应用程序栏变红”,而是“为什么这段代码不能按预期执行?””

jc3wubiy

jc3wubiy1#

PrimaryColor不能直接在themeData中工作,必须在colorScheme中声明

theme: ThemeData(colorScheme: ColorScheme.light(primary: Colors.red)),

您可以使用primarySwatch

theme: ThemeData(primarySwatch: Colors.red),

也可以使用appBarTheme

appBarTheme: AppBarTheme(
    backgroundColor: Colors.red
),

primarySwatch不是颜色。是MaterialColor这意味着它是一个材料应用程序将使用的颜色的不同阴影。
primaryColor就是其中之一。确切地说,primaryColor通常等于primarySwatch[500]
ThemeData是一个包含所有主题设置的主题,也是控制应用程序外观的主题,但ColorScheme只是一组颜色,您可以创建这些颜色来轻松维护应用程序的颜色。注意,ThemeData类有一个参数colorScheme,因此您可以创建自己的colorScheme并将其添加到ThemeData object
所有小部件样式都继承自ThemeData(在MaterialApp中定义)的颜色或主题,而不是ColorSchemecolorScheme只是您定义的额外颜色,无论是在ThemeData中还是在应用程序中的任何地方。

wtzytmuj

wtzytmuj2#

AppBar背景颜色来自appBarTheme(color:..)
我更喜欢扩展家长主题,

return MaterialApp(
  primaryColor: Colors.green,// no effect on AppBar
  theme: Theme.of(context).copyWith(
    appBarTheme: Theme.of(context).appBarTheme.copyWith(
          color: Colors.red,
        ),
  ),

更多关于主题

8ljdwjyq

8ljdwjyq3#

MaterialApp(
  theme: ThemeData.dark().copyWith(
    primaryColor: Color(0xFF090C22),
    backgroundColor: Color(0xFF090C22),
    scaffoldBackgroundColor: Color(0xFF090C22),
    appBarTheme: AppBarTheme(
      backgroundColor: Color(0xFF090C22),
    ),
  ),
);
e0bqpujr

e0bqpujr4#

我也在udemy上做同样的课程,并使用下面的配色方案为我工作。应用于appbar的原色。
颜色方案:const ColorScheme. light(主要:www.example.com,secondary:Colors. white)Colors.red,secondary: Colors.white)

相关问题