Files

34 lines
952 B
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
final themeModeProvider =
StateNotifierProvider<ThemeModeNotifier, ThemeMode>((ref) {
return ThemeModeNotifier();
});
class ThemeModeNotifier extends StateNotifier<ThemeMode> {
ThemeModeNotifier() : super(ThemeMode.system) {
_load();
}
final _storage = const FlutterSecureStorage();
static const _key = 'theme_mode';
Future<void> _load() async {
final value = await _storage.read(key: _key);
if (value == 'light') state = ThemeMode.light;
if (value == 'dark') state = ThemeMode.dark;
}
Future<void> setTheme(ThemeMode mode) async {
state = mode;
final value = mode == ThemeMode.light
? 'light'
: mode == ThemeMode.dark
? 'dark'
: 'system';
await _storage.write(key: _key, value: value);
}
}