В Flutter можно применить тему к приложению, используя класс ThemeData. Но есть две проприеты этого класса, которые меня primaryColor: primaryColor и primarySwatch. Какая разница между этими двумя свойствами и когда использовать одно или другое? Благодарю.
В чем разница между primaryColor и primarySwatch в Flutter?
Ответ 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).