ThemeData PrimaryColor 不改变 appBar 背景颜色

Sam*_*Sam 6 dart flutter flutter-theme

 class BMICalculator extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primaryColor: Colors.red,
      ),
      home: InputPage(),
    );
Run Code Online (Sandbox Code Playgroud)

我正在学习这门课程:https://www.udemy.com/course/flutter-bootcamp-with-dart/

在主题部分,她使用这个确切的代码将她的 appBar 变成红色。我的代码没有显示任何错误,但我的 appBar 仍然是默认主题。

原色的描述在这里:https://api.flutter.dev/flutter/material/ThemeData-class.html

它没有说它已经折旧,也没有表明最近有任何变化。

我的问题不是“如何使我的应用程序栏变为红色”,而是“为什么此代码不能按预期执行?”

Roh*_*iar 7

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

theme: ThemeData(colorScheme: ColorScheme.light(primary: Colors.red)),
Run Code Online (Sandbox Code Playgroud)

您可以使用primarySwatch

theme: ThemeData(primarySwatch: Colors.red),
Run Code Online (Sandbox Code Playgroud)

或者你可以使用appBarTheme

appBarTheme: AppBarTheme(
    backgroundColor: Colors.red
),
Run Code Online (Sandbox Code Playgroud)

primarySwatch不是一种颜色。它是MaterialColor。这意味着它是材质应用程序将使用的不同深浅的颜色。

primaryColor是这些色调之一。准确地说,primaryColor通常等于primarySwatch[500]

ThemeData一个保存所有主题设置,一个控制应用程序的外观,但ColorScheme只是您创建的一组颜色,以轻松维护应用程序的颜色。请注意,该类ThemeData有一个参数colorScheme,因此您可以创建自己的参数colorScheme并将其添加到ThemeData object.

所有小部件样式都继承自颜色或主题ThemeData(在 MaterialApp 中定义)ColorScheme,而不仅仅是您定义的额外颜色,无论是在应用程序中还是在应用程序中的任何位置colorScheme使用。ThemeData