“ThemeData”中的“primaryColor”属性在 Flutter 中不起作用

smd*_*smd 11 dart flutter

我目前正在研究如何在 Flutter 应用程序中使用 ThemeData。\n它应该适用于下面的代码,但颜色主题未按预期应用。

\n

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

\n

执行环境已Chrome开启Windows10。Android11两者都没有应用深色主题。\n此外,在真机环境和虚拟环境中结果是相同的。

\n
import 'package:flutter/material.dart';\n\nvoid main() {\n  runApp(MyApp());\n}\n\nclass MyApp extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      theme: ThemeData(primaryColor: Colors.purple), // This "primaryColor" option does not working.\n      home: Scaffold(\n        appBar: AppBar(\n          title: const Text('Test App'),\n        ),\n        body: Container(),\n      ),\n    );\n  }\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n

下面是我的颤振环境。

\n
Flutter 2.5.1 \xe2\x80\xa2 channel stable \xe2\x80\xa2 https://github.com/flutter/flutter.git\nFramework \xe2\x80\xa2 revision ffb2ecea52 (5 days ago) \xe2\x80\xa2 2021-09-17 15:26:33 -0400\nEngine \xe2\x80\xa2 revision b3af521a05\nTools \xe2\x80\xa2 Dart 2.14.2\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

感谢您的帮助。

\n

小智 13

primaryColor在最新版本的 Flutter 中,和accentColorinsideThemeData不起作用是正确的。相反,您应该colorScheme使用ThemeData.

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

请参阅此处的参考。

要了解为变体等选择什么值,请查看材料设计规范。