import 'package:flutter/material.dart'; import 'package:initial_folder/theme.dart'; import 'package:shared_preferences/shared_preferences.dart'; class ThemeProvider with ChangeNotifier { ThemeData _themeData = ThemeClass.darkmode; ThemeProvider() { loadTheme(); } ThemeData get themeData => _themeData; set themeData(ThemeData themeData) { _themeData = themeData; notifyListeners(); } void toggleTheme() { if (_themeData == ThemeClass.lightmode) { themeData = ThemeClass.darkmode; _saveTheme('dark'); } else { themeData = ThemeClass.lightmode; _saveTheme('light'); } } Future loadTheme() async { SharedPreferences prefs = await SharedPreferences.getInstance(); String? theme = prefs.getString('theme'); if (theme == null) { var brightness = WidgetsBinding.instance.platformDispatcher.platformBrightness; if (brightness == Brightness.light) { themeData = ThemeClass.lightmode; _saveTheme('light'); } else { themeData = ThemeClass.darkmode; _saveTheme('dark'); } } else if (theme == 'dark') { themeData = ThemeClass.darkmode; } else { themeData = ThemeClass.lightmode; } notifyListeners(); } Future saveCurrentTheme() async { String theme = _themeData == ThemeClass.darkmode ? 'dark' : 'light'; await _saveTheme(theme); } Future _saveTheme(String theme) async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString('theme', theme); } }