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