Ce qui suit est tiré de ma lecture de theme_data.dart :
primarySwatch
La valeur par défaut est Colors.blue
et définit les champs suivants (y compris primaryColor
) à diverses nuances de la MaterialColor
selon que le thème brightness
est clair ou foncé (par défaut, clair) :
Thèmes légers
// The default shade for the color is used
primaryColor = primarySwatch; // [500] for normal colors and [200] for accent colors
primaryColorLight = primarySwatch[100];
primaryColorDark = primarySwatch[700];
// This can be overridden by setting accentColor (below) manually
toggleableActiveColor = primarySwatch[600];
accentColor = primarySwatch[500];
secondaryHeaderColor = primarySwatch[50];
textSelectionColor = primarySwatch[200];
textSelectionHandleColor = primarySwatch[300]
backgroundColor = primarySwatch[200];
*buttonColor est fixé à sa valeur par défaut (gris[300])
Thèmes sombres
buttonColor = primarySwatch[600];
*Les autres champs énumérés ci-dessus pour les thèmes clairs sont définis par défaut pour les thèmes foncés (diverses nuances de sarcelleAccent, gris ou noir).
Tous les thèmes (clairs ou foncés)
// Brightness.dark/light is estimated based on the default shade for the color
// This also sets the bool primaryIsDark
primaryColorBrightness = estimateBrightnessForColor(primarySwatch);
// This generates the modern simplified set of theme colors flutter recommends
// using when theming Widgets based on the theme. Set it manually if you need
// more control over individual colors
colorScheme = ColorScheme.fromSwatch(
primarySwatch: primarySwatch, // as above
primaryColorDark: primaryColorDark, // as above
accentColor: accentColor, // as above
cardColor: cardColor, // default based on theme brightness, can be set manually
backgroundColor: backgroundColor, // as above
errorColor: errorColor, // default (Colors.red[700]), can be set manually
brightness: brightness, // default (Brightness.light), can be set manually
);
Comme mentionné dans la réponse acceptée, seul le réglage primaryColor
pourrait laisser les widgets ouverts à la sélection d'une autre couleur par défaut (diverses nuances de bleu) basée sur l'un des autres champs ci-dessus s'ils ne sont pas également définis individuellement, donc primarySwatch
est un raccourci pratique pour les thèmes simples.
En général, cependant, le champ colorScheme est le plus important car, selon les conventions modernes, vous devriez utiliser les éléments suivants Theme.of(context).colorScheme.<Color>
(bien que cela ne fonctionne pas encore partout, selon le moment où vous lisez ces lignes).
Ainsi, si vous avez besoin de plus de contrôle sur les couleurs des thèmes individuels, vous pouvez soit vous contenter de définir les champs utilisés dans le champ ColorScheme.fromSwatch
ou simplement définir l'option primarySwatch
(pour assurer la rétrocompatibilité des widgets Flutter qui n'ont pas encore été migrés), puis définissez l'attribut colorScheme
manuellement pour un contrôle supplémentaire. Voir aussi ce document pour plus d'informations
0 votes
Une couleur qui possède un petit tableau de couleurs apparentées appelé "swatch".