mirror of
https://github.com/we-promise/sure.git
synced 2026-04-14 09:34:05 +00:00
* Feature: Add Theme selection in Settings page * Fix: Theme provider exception handling. * feat(mobile): Show theme selection option in settings screen. * BuildID version 9 --------- Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
51 lines
1.1 KiB
Dart
51 lines
1.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import '../services/preferences_service.dart';
|
|
|
|
class ThemeProvider extends ChangeNotifier {
|
|
ThemeMode _themeMode = ThemeMode.system;
|
|
|
|
ThemeMode get themeMode => _themeMode;
|
|
|
|
ThemeProvider() {
|
|
_loadThemeMode();
|
|
}
|
|
|
|
Future<void> _loadThemeMode() async {
|
|
try {
|
|
final mode = await PreferencesService.instance.getThemeMode();
|
|
_themeMode = _fromString(mode);
|
|
} catch (_) {
|
|
_themeMode = ThemeMode.system;
|
|
}
|
|
notifyListeners();
|
|
}
|
|
|
|
Future<void> setThemeMode(ThemeMode mode) async {
|
|
_themeMode = mode;
|
|
notifyListeners();
|
|
await PreferencesService.instance.setThemeMode(_toString(mode));
|
|
}
|
|
|
|
static ThemeMode _fromString(String mode) {
|
|
switch (mode) {
|
|
case 'light':
|
|
return ThemeMode.light;
|
|
case 'dark':
|
|
return ThemeMode.dark;
|
|
default:
|
|
return ThemeMode.system;
|
|
}
|
|
}
|
|
|
|
static String _toString(ThemeMode mode) {
|
|
switch (mode) {
|
|
case ThemeMode.light:
|
|
return 'light';
|
|
case ThemeMode.dark:
|
|
return 'dark';
|
|
case ThemeMode.system:
|
|
return 'system';
|
|
}
|
|
}
|
|
}
|