首页 > 解决方案 > Flutter 主题 - primarySwatch 与 primaryColor

问题描述

定义主题数据时,我应该使用什么 - primarySwatch 或 primaryColor?

它们可以一起使用吗?

最后,它们之间有什么区别?

ThemeData(
    primarySwatch: kBaseColor,
    brightness: Brightness.light,
    primaryColor: kBaseColor,
    visualDensity: VisualDensity.adaptivePlatformDensity,
),

标签: flutter

解决方案


primaryColor有一个shade[500] of的类型Color,它本身有 type 。primarySwatchMaterialColor

最好用于primarySwatch让应用程序为其组件定义不同的阴影。

这是如何在theme_data.dart(材质库)中定义主题颜色的代码片段:

    final Brightness _brightness = brightness ?? colorScheme?.brightness ?? Brightness.light;
    final bool isDark = _brightness == Brightness.dark;

    primaryColor ??= isDark ? Colors.grey[900]! : primarySwatch;
    primaryColorLight ??= isDark ? Colors.grey[500] : primarySwatch[100]!
    toggleableActiveColor ??= isDark ? Colors.tealAccent[200]! : (accentColor ?? primarySwatch[600]!);
    secondaryHeaderColor ??= isDark ? Colors.grey[700]! : primarySwatch[50]!;
    textSelectionHandleColor ??= isDark ? Colors.tealAccent[400]! : primarySwatch[300]!;

等等。


推荐阅读