34 lines
932 B
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();
|
|
}
|
|
}
|