#flutter #themes
Вопрос:
В новой версии Flutter (начиная с версии 2.5) свойство accentColor в ThemeData устарело и теперь должно обрабатываться из colorScheme как вторичный цвет colorScheme: ColorScheme.fromSwatch().copyWith (secondary: newColorForAccent))
,
Как я могу видеть, этого недостаточно, так как accentColor также использовался во Flutter для определения цвета других виджетов, таких как CheckBoxTile и SwitchListTile.
Тематические данные, которые у меня есть в основном, следующие:
theme: ThemeData(
primaryColor: Color (0xFF4BD1FF),
colorScheme: ColorScheme.fromSwatch().copyWith(secondary: Color (0xFFD8A21B)),
//textTheme and others
),
Как я могу переопределить цвет этих виджетов, чтобы он мог использоваться во всем приложении?
Ответ №1:
Я нашел решение с помощью небольшого количества проб и ошибок. Я оставляю его здесь на случай, если он кому-нибудь пригодится. В основном то, что требуется, — это определить темы для каждого компонента внутри тематических данных. Вот пример:
checkboxTheme: CheckboxThemeData(
checkColor: MaterialStateProperty.all(Colors.white),
fillColor: MaterialStateProperty.all(Color (0xFFD8A21B))
),
switchTheme: SwitchThemeData(
thumbColor: MaterialStateProperty.all(Color (0xFFD8A21B)),
trackColor: MaterialStateProperty.all(Color (0x66D8A21B)),
),
radioTheme: RadioThemeData(
fillColor: MaterialStateProperty.all(Color (0xFFD8A21B))
),
Поскольку это часть основного, не забывайте всегда делать полный перезапуск после внедрения. В этом случае горячая перезагрузка Flutter не будет отображать никаких изменений.