theme

 avatar
unknown
dart
2 years ago
1.2 kB
3
Indexable
import 'package:base_architecture/core/constants/persistent_keys.dart';
import 'package:base_architecture/core/constants/theme.dart';
import 'package:flutter/material.dart';
import 'package:rx_shared_preferences/rx_shared_preferences.dart';

class ThemeNotifier with ChangeNotifier {
  ThemeData _themeData;

  ThemeNotifier(this._themeData);

  ThemeData getTheme() => _themeData;

  void setTheme(ThemeData themeData) async {
    _themeData = themeData;
    await persistTheme(themeData);
    notifyListeners();
  }

  Future<bool> loadPersistedTheme() async {
    await RxSharedPreferences.getInstance().read<String>(
      PersistentKeys.themeKey,
      (p0) {
        if (p0 == 'DARK') {
          setTheme(AppThemes().darkTheme);
        } else {
          setTheme(AppThemes().lightTheme);
        }
        notifyListeners();
        return p0.toString();
      },
    );
    bool done = true;
    return done;
  }

  Future<void> persistTheme(ThemeData themeData) async {
    bool isDarkTheme = themeData == AppThemes().darkTheme;

    RxSharedPreferences.getInstance().write<String>(
      PersistentKeys.themeKey,
      isDarkTheme ? 'DARK' : 'LIGHT',
      (p0) => null,
    );
  }
}
Editor is loading...