Как создать 3 разные цветовые темы? Светлые, темные и индивидуальные

Я хочу иметь возможность переключаться между светлым (белым), темным (черным), пользовательским (мой первоначальный вид - синий). Это возможно? Если да, то как?

Отвечает ли это на ваш вопрос? Как реализовать Dark Mode и Light Mode во флаттере?

samuei 05.04.2023 15:28

Эти ответы для двухцветных тем? Светлый и темный?

Leena Marie 05.04.2023 15:33
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете указать ThemeData на MaterialApp(theme:, это будет отражать дерево виджетов.

void main() {
  runApp(name());
}

enum AppTheme {
  LightTheme(),
  DarkTheme,
  CustomTheme;
}

extension AppThemeData on AppTheme {
  get data {
    switch (this) {
      case AppTheme.DarkTheme:
        return ThemeData.dark();
      case AppTheme.CustomTheme:
        return ThemeData(
          useMaterial3: true,
          colorScheme: ColorScheme.fromSwatch().copyWith(
            secondary: Colors.deepPurple,
          ),
        );

      case AppTheme.LightTheme:
      default:
        return ThemeData.light();
    }
  }
}

class name extends StatefulWidget {
  const name({super.key});

  @override
  State<name> createState() => _nameState();
}
// You may use some sort of state-management solution like riverpod/bloc on project level
class _nameState extends State<name> {
  AppTheme theme = AppTheme.LightTheme;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      theme: theme.data,
      home: Scaffold(
        appBar: AppBar(
          title: Text("test"),
        ),
        body: Column(
          children: [
            Text("test"),
            for (final value in AppTheme.values)
              ElevatedButton(
                onPressed: () {
                  setState(() {
                    theme = value;
                  });
                },
                child: Text(value.name),
              )
          ],
        ),
      ),
    );
  }
}

Не могли бы вы показать мне, как добавить эту функцию в другой файл/страницу? Я разместил новый вопрос здесь stackoverflow.com/questions/76111375/…

Leena Marie 18.05.2023 18:24

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