| 12345678910111213141516171819202122232425262728 |
- import 'package:flutter/material.dart';
- import 'package:shared_preferences/shared_preferences.dart';
- /// App-wide theme mode, persisted across launches. Defaults to
- /// [ThemeMode.system] until a user preference is loaded/set.
- class ThemeController {
- ThemeController._();
- static const _prefsKey = 'theme_mode';
- static final ValueNotifier<ThemeMode> themeMode = ValueNotifier(ThemeMode.system);
- static Future<void> load() async {
- final prefs = await SharedPreferences.getInstance();
- final stored = prefs.getString(_prefsKey);
- themeMode.value = switch (stored) {
- 'light' => ThemeMode.light,
- 'dark' => ThemeMode.dark,
- _ => ThemeMode.system,
- };
- }
- static Future<void> setThemeMode(ThemeMode mode) async {
- themeMode.value = mode;
- final prefs = await SharedPreferences.getInstance();
- await prefs.setString(_prefsKey, mode.name);
- }
- }
|