Как установить SharedPreferences для темы во Flutter? - PullRequest
0 голосов
/ 07 мая 2020

Здесь я добавил функциональность theme в flutter app. Я объясню это вкратце, я создал один класс с именем AppStyleModeNotifier. В этом классе я установил два метода для light и dark theme. Я поместил этот класс.

import 'package:flutter/material.dart';

class AppStyleModeNotifier extends ChangeNotifier {
  int mode = 0; //0 for light and 1 for dark

  Color backgroungColor = Colors.grey[100];
  Color cardBackgroundColor = Colors.white;
  Color headlineColor = Colors.black;
  Color descriptionColor = Colors.grey[800];
  Color contentColor = Colors.grey[800];
  Color dateColor = Colors.grey[800];
  Color appbarIconColor = Colors.black;
  Color appbarBackgroundColor = Colors.white;
  Color actionButtonColor = Colors.black;
  Color appbarTextColor = Colors.black;

  switchMode() {
    if (mode == 0) {
      //if it is light mode currently switch to dark
      backgroungColor = Color(0xfff2f2f2);
      cardBackgroundColor = Colors.white;
      headlineColor = Colors.black;
      descriptionColor = Colors.grey[800];
      contentColor = Colors.grey[800];
      dateColor = Colors.grey[800];
      appbarIconColor = Colors.black;
      appbarBackgroundColor = Colors.white;
      actionButtonColor = Colors.black;
      appbarTextColor = Colors.black;
      mode = 1;
    } else {
      //if it is dark mode currently switch to light
      backgroungColor = Colors.black;
      cardBackgroundColor = Color(0xff2b2a2a);
      headlineColor = Colors.white;
      descriptionColor = Colors.white60;
      contentColor = Colors.white60;
      dateColor = Colors.white60;
      appbarIconColor = Colors.white;
      appbarBackgroundColor = Colors.black;
      actionButtonColor = Colors.white;
      appbarTextColor = Colors.white;
      mode = 0;
    }

    notifyListeners();
  }
}

Теперь я использую этот класс в своем приложении для светлой и темной темы как

 final appStyleMode = Provider.of<AppStyleModeNotifier>(context);

Я использую этот метод для изменения темы, когда пользователь нажимает кнопку.

IconButton(
   icon: Icon(Icons.brightness_6),
   onPressed: () {
      appStyleMode.switchMode();
   }
)

Но теперь проблема, с которой я столкнулся, заключается в том, что когда я перезапускаю свое приложение, она устанавливается как светлая тема по умолчанию в моем применение. Итак, я хочу установить тему, которую пользователь устанавливает, когда пользователь закрывает приложение. Это означает, что если пользователь установил светлую тему, тогда, когда пользователь повторно откроет приложение, оно будет установлено как светлая тема, а пользователь установит темную тему, тогда она будет установлена ​​как темная тема. Как реализовать эту функцию sh?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...