creek

The AI Image Editor of 2030

theme_service.dart (982B)


import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

// Global instance for easy access
final themeService = ThemeService();

class ThemeService with ChangeNotifier {
  ThemeMode _mode = ThemeMode.system;
  ThemeMode get mode => _mode;

  Future<void> loadTheme() async {
    final prefs = await SharedPreferences.getInstance();
    final String? saved = prefs.getString('theme_mode');

    if (saved == 'light') {
      _mode = ThemeMode.light;
    } else if (saved == 'dark') {
      _mode = ThemeMode.dark;
    } else {
      _mode = ThemeMode.system;
    }

    notifyListeners();
  }

  Future<void> toggleTheme() async {
    final prefs = await SharedPreferences.getInstance();

    if (_mode == ThemeMode.dark) {
      _mode = ThemeMode.light;
      await prefs.setString('theme_mode', 'light');
    } else {
      _mode = ThemeMode.dark;
      await prefs.setString('theme_mode', 'dark');
    }

    notifyListeners();
  }
}