import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:shared_preferences/shared_preferences.dart'; const _kKey = 'app_theme'; const _kValid = {'a', 'b', 'c'}; class ThemeController extends StateNotifier { ThemeController() : super('a'); Future restore() async { final prefs = await SharedPreferences.getInstance(); final v = prefs.getString(_kKey); if (v != null && _kValid.contains(v)) state = v; } Future set(String key) async { if (!_kValid.contains(key)) return; state = key; final prefs = await SharedPreferences.getInstance(); await prefs.setString(_kKey, key); } } final themeControllerProvider = StateNotifierProvider((ref) => ThemeController());