27 lines
726 B
Dart
27 lines
726 B
Dart
import 'package:flutter/material.dart';
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
|
|
import '../utils/shared_preferences_provider.dart';
|
|
|
|
part 'theme_mode_provider.g.dart';
|
|
|
|
const _themeModeKey = 'theme_mode';
|
|
|
|
@Riverpod(keepAlive: true)
|
|
class ThemeModeController extends _$ThemeModeController {
|
|
@override
|
|
ThemeMode build() {
|
|
final stored = ref.watch(sharedPreferencesProvider).getString(_themeModeKey);
|
|
return switch (stored) {
|
|
'light' => ThemeMode.light,
|
|
'dark' => ThemeMode.dark,
|
|
_ => ThemeMode.system,
|
|
};
|
|
}
|
|
|
|
Future<void> setThemeMode(ThemeMode mode) async {
|
|
state = mode;
|
|
await ref.read(sharedPreferencesProvider).setString(_themeModeKey, mode.name);
|
|
}
|
|
}
|