Основной пользовательский цвет не работает во флаттере

У меня проблема, я хочу изменить цвет текстовой кнопки из данных темы, но она не работает. Вот мой код:

      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виджет, у которого есть контекст внутри его конструктора.

Ваша проблема может быть первой, второй или и той, и другой.

Другие вопросы по тегам