В области разработки приложений переключение тем является одной из популярных функций. Изменение темы может уменьшить нагрузку на глаза пользователя, а также время работы от батареи.
Здесь мы узнаем, как разработать приложение, которое может динамически менять темы.
В этом проекте мы будем использовать два пакета Providerи SharedPreferences.
- Provider: это один из известных пакетов, который используется для внедрения зависимостей и управления состоянием.
- SharedPreferences: общие настройки позволяют нам хранить минимальное количество примитивных данных в виде пар ключ/значение в файле на устройстве. Здесь мы используем его для хранения текущей темы, чтобы пользователь получал то же самое после закрытия и возвращения обратно в приложение.
Мы можем добиться этого двумя способами: один, добавив пользовательскую опцию, а другой, автоматически переключая тему на основе настроек системы.
Во Flutter мы можем изменить тему во всем приложении с помощью ThemeData в конструкторе MaterialApp. Тема по умолчанию будет использоваться во всем приложении, если тема не предоставлена.
MaterialApp(
theme: ThemeData( ... ), // to declare the theme to throughout the application
);
ThemeDataиспользуется для настройки внешнего вида всего приложения. Он состоит из большого количества свойств для объявления темы в нашем приложении.
ThemeData.dark() отвечает за предоставление темы dart во всем приложении.
MaterialApp(
theme: ThemeData.dark(), // default dark the theme
);
ThemeData.light() дает светло-голубую тему, которая является темой по умолчанию для каждого флаттер-приложения.
Мы также можем изменить основной цветтемы. Мы можем получить следующим образом:
MaterialApp( theme:
ThemeData( brightness: Brightness.light, primaryColor: Colors.green, primarySwatch: Colors.green ),);
Давайте копать
1. Добавьте пакет в файл pubsec.yaml.
dependencies: provider: ^6.0.3 shared_preferences: ^2.0.15
2. Создайте класс для Общих настроек.
Создайте файл с именем mytheme_preference.dart. Здесь мы создаем два метода: getTheme() и setTheme()для получение темы и сохранение темы соответственно.
3. Создайте провайдер для состояния темы
Создайте файл с именем model_theme.dart. Здесь мы изменяем состояние темы и сохраняем ее в наших общих настройках.
- _isDark — логическое значение, указывающее статус темы.
- _preferences — это экземпляр переменной для MyThemePreferences.
- Метод notifyListeners() для обновления значения переменной _isDark и перестройки пользовательского интерфейса.
- Метод getPreference() загружает статус темы из общих настроек и устанавливает для него значение _isDark.
4. Добавьте провайдера в MaterialApp
5. Домашняя страница
Здесь мы добавляем Consumer для прослушивания и обновления пользовательского интерфейса.
Мы можем изменить тему на основе системных настроек, указав светлый ThemeData для параметра theme и темный ThemeData для темного Theme параметр.
theme: ThemeData.light(), // Provide light theme.
darkTheme: ThemeData.dark(), // Provide dark theme.
themeMode: ThemeMode.system, //to follow the system theme
Давайте подключимся
Мы можем быть друзьями. Найдите на Facebook, Linkedin, Github, Youtube, BuyMeACoffee и Instagram.
Посещение: Flatter Junction
Добавить:КупиКофе
Заключение
Я надеюсь, что эта статья была вам полезна, и вы узнали много нового. В этой статье я использовал различные вещи, которые могут быть новыми для некоторых из вас.
Если вы узнали что-то новое или хотите что-то предложить, дайте мне знать в комментариях.
Если вам понравилась статья, нажмите на значок 👏, который мотивирует на то, чтобы доставлять вам все новое.
Кроме того, подпишитесь, чтобы быть в курсе интересных статей и проектов.
Обучение путем обмена оказывает большое влияние на процесс обучения и делает сообщество все больше и больше.
Совместное использование — это магнит, который притягивает к вам других энтузиастов.
Поэтому давайте сделаем небольшой шаг к тому, чтобы сделать наше учебное сообщество больше.
Поделитесь этой статьей с друзьями или твитните о статье, если она вам понравилась.
Получить полный в:
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Больше контента в публикации Level Up Coding.
Подписывайтесь: Twitter, LinkedIn, Информационный бюллетень
Level Up меняет рекрутинг в сфере технологий ➡️ Присоединяйтесь к нашему коллективу талантов