Миграция акцентного цвета: Как изменить цвета радиолистики и переключаемых списков?

#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 не будет отображать никаких изменений.