import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; class ThemeService { static const _prefKey = 'theme_mode'; static final ValueNotifier notifier = ValueNotifier( ThemeMode.system, ); /// 启动时调用(main.dart) static Future init() async { final prefs = await SharedPreferences.getInstance(); final saved = prefs.getString(_prefKey); notifier.value = _parse(saved); } /// 菜单里调用 static Future setMode(ThemeMode mode) async { notifier.value = mode; final prefs = await SharedPreferences.getInstance(); await prefs.setString(_prefKey, _name(mode)); } static ThemeMode _parse(String? s) { switch (s) { case 'light': return ThemeMode.light; case 'dark': return ThemeMode.dark; default: return ThemeMode.system; } } static String _name(ThemeMode m) { switch (m) { case ThemeMode.light: return 'light'; case ThemeMode.dark: return 'dark'; case ThemeMode.system: return 'system'; } } }