В чем разница между 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).