1
0
forked from baron/baron-sso

다크 모드 전역 상태와 테마 기반 추가

This commit is contained in:
2026-04-08 16:14:50 +09:00
parent 873d56e35f
commit 332b657add
6 changed files with 246 additions and 43 deletions

View File

@@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class ThemeController extends ValueNotifier<ThemeMode> {
ThemeController._() : super(ThemeMode.light);
static const storageKey = 'userfront_theme';
static final ThemeController instance = ThemeController._();
bool get isDark => value == ThemeMode.dark;
Future<void> restore() async {
final prefs = await SharedPreferences.getInstance();
final stored = prefs.getString(storageKey);
value = stored == 'dark' ? ThemeMode.dark : ThemeMode.light;
}
Future<void> setThemeMode(ThemeMode mode) async {
if (value != mode) {
value = mode;
}
final prefs = await SharedPreferences.getInstance();
await prefs.setString(
storageKey,
mode == ThemeMode.dark ? 'dark' : 'light',
);
}
Future<void> toggle() {
return setThemeMode(isDark ? ThemeMode.light : ThemeMode.dark);
}
}