首页 > 解决方案 > “ThemeData”中的“primaryColor”属性在 Flutter 中不起作用

问题描述

我目前正在研究如何在 Flutter 应用程序中使用 ThemeData。它应该与下面的代码一起使用,但颜色主题没有按预期应用。

奇怪的是,使用“primarySwatch”选项而不是“primaryColor”选项会按预期应用主题。

执行环境Chrome开启Windows10。两者都没有应用深色主题。另外,在Android11真机环境和虚拟环境下,结果是一样的。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primaryColor: Colors.purple), // This "primaryColor" option does not working.
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Test App'),
        ),
        body: Container(),
      ),
    );
  }
}

下面是我的颤振环境。

Flutter 2.5.1 • channel stable • https://github.com/flutter/flutter.git
Framework • revision ffb2ecea52 (5 days ago) • 2021-09-17 15:26:33 -0400
Engine • revision b3af521a05
Tools • Dart 2.14.2

我在代码中犯了什么错误?

谢谢你的帮助。

标签: flutterdart

解决方案


使用最新版本的 Flutter,它是正确的,primaryColor并且accentColor内部ThemeData不起作用。相反,您应该使用colorScheme.ThemeData

ThemeData(colorScheme: ColorScheme(
  primary: Colors.blue,
  primaryVariant: Colors.red,
  secondary: Colors.green,
  // all fields should have a value
));

请参阅此处的参考资料

要了解为变体等选择什么值,请查看Material design specification


推荐阅读