Files
Kifi/kifi-app/lib/core/theme/theme_provider.dart
2026-08-16 20:13:21 +05:30

42 lines
1.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
class ThemeNotifier extends Notifier<ThemeMode> {
static const _themePrefKey = 'theme_pref';
@override
ThemeMode build() {
_loadTheme();
return ThemeMode.system;
}
Future<void> _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<void> 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<ThemeNotifier, ThemeMode>(() {
return ThemeNotifier();
});