В чем разница между primaryColor и primarySwatch в Flutter?
В Flutter можно применить тему к приложению, используя класс ThemeData. Но есть две проприеты этого класса, которые меня primaryColor
: primaryColor
и primarySwatch
. Какая разница между этими двумя свойствами и когда использовать одно или другое? Благодарю.
Ответы
Ответ 1
primarySwatch
не является Color
. Это MaterialColor
. Это означает, что это разные оттенки цвета, которые будет использовать материальное приложение.
primaryColor
- один из тех оттенков. primaryColor
, primaryColor
обычно равен primarySwatch[500]
.
Обычно лучше определить primarySwatch
вместо primaryColor
. Поскольку некоторые материальные компоненты могут использовать другой оттенок primaryColor
для таких вещей, как тень, граница,...
Ответ 2
Я считаю (@RémiRousselet не могли бы вы подтвердить), что 9 полей являются следующими:
secondaryHeaderColor ??= isDark ? Colors.grey[700] : primarySwatch[50];
primaryColorLight: isDark ? Colors.grey[500] : primarySwatch[100];
backgroundColor ??= isDark ? Colors.grey[700] : primarySwatch[200];
textSelectionColor ??= isDark ? accentColor : primarySwatch[200];
textSelectionHandleColor ??= isDark ? Colors.tealAccent[400] : primarySwatch[300];
accentColor ??= isDark ? Colors.tealAccent[200] : primarySwatch[500];
toggleableActiveColor ??= isDark ? Colors.tealAccent[200] : (accentColor ?? primarySwatch[600]);
buttonColor ??= isDark ? primarySwatch[600] : Colors.grey[300];
primaryColorDark ??= isDark ? Colors.black : primarySwatch[700];
isDark можно определить, оценивая тему .brightness(Brightness.light или .dark).