Основной пользовательский цвет не работает во флаттере
У меня проблема, я хочу изменить цвет текстовой кнопки из данных темы, но она не работает. Вот мой код:
darkTheme: ThemeData(
primaryColor:Colors.white,
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(primary: Colors.white),
)
),
и мой код кнопки:
TextButton(
style: TextButton.styleFrom(
primary: Theme.of(context).primaryColor,
textStyle: TextStyle(fontSize: 16),),
onPressed: (){}, child: Text("Hellosir",))
1 ответ
Я могу думать о двух проблемах, почему это не работает.
- Во-первых, вы хотите получить доступ
ThemeData
определено вdarkTheme
, но твойthemeMode
не темный. Итак, вMaterialApp
добавлятьthemeMode: ThemeMode.dark
также параметр. - Во-вторых, ваша кнопка, где вы звоните
Theme.of(context).primaryColor
находится внутри того же виджета, что и ваше определение темы, и вашcontext
до сих пор нет этих данных. Таким образом, эти данные есть только в контексте дочерних элементов текущего виджета. Решением было бы создать новый виджет с вашей кнопкой внутри него или обернуть вашу кнопку с помощьюBuilder
виджет, у которого есть контекст внутри его конструктора.
Ваша проблема может быть первой, второй или и той, и другой.