The-Agency/lib/ui/providers/theme_provider.dart

34 lines
932 B
Dart

import "package:flutter/foundation.dart";
import "settings_provider.dart";
class ThemeProvider extends ChangeNotifier {
ThemeProvider(this._settingsProvider) : _currentTheme = _settingsProvider.settings.theme {
_settingsProvider.addListener(_onSettingsChanged);
}
final SettingsProvider _settingsProvider;
late String _currentTheme;
String get currentTheme => _currentTheme;
bool get isDark => _currentTheme == "dark" || _currentTheme == "dark-ansi";
void _onSettingsChanged() {
if (_currentTheme != _settingsProvider.settings.theme) {
_currentTheme = _settingsProvider.settings.theme;
notifyListeners();
}
}
Future<void> setTheme(String themeName) async {
await _settingsProvider.updateTheme(themeName);
_currentTheme = themeName;
notifyListeners();
}
@override
void dispose() {
_settingsProvider.removeListener(_onSettingsChanged);
super.dispose();
}
}