import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:shared_preferences/shared_preferences.dart'; class ThemeNotifier extends Notifier { static const _themePrefKey = 'theme_pref'; @override ThemeMode build() { _loadTheme(); return ThemeMode.system; } Future _loadTheme() async { final prefs = await SharedPreferences.getInstance(); final themeString = prefs.getString(_themePrefKey); if (themeString != null) { if (themeString == 'light') { state = ThemeMode.light; } else if (themeString == 'dark') { state = ThemeMode.dark; } } } Future setTheme(ThemeMode mode) async { state = mode; final prefs = await SharedPreferences.getInstance(); if (mode == ThemeMode.light) { await prefs.setString(_themePrefKey, 'light'); } else if (mode == ThemeMode.dark) { await prefs.setString(_themePrefKey, 'dark'); } else { await prefs.setString(_themePrefKey, 'system'); } } } final themeProvider = NotifierProvider(() { return ThemeNotifier(); });