Rain/lib/theme/theme_controller.dart
2025-05-28 17:42:15 +03:00

40 lines
1.1 KiB
Dart
Executable file

import 'package:get/get.dart';
import 'package:flutter/material.dart';
import 'package:rain/app/data/db.dart';
import 'package:rain/main.dart';
class ThemeController extends GetxController {
ThemeMode get theme => _getThemeMode();
void saveOledTheme(bool isOled) {
_updateSetting((settings) => settings.amoledTheme = isOled);
}
void saveMaterialTheme(bool isMaterial) {
_updateSetting((settings) => settings.materialColor = isMaterial);
}
void saveTheme(String themeMode) {
_updateSetting((settings) => settings.theme = themeMode);
}
void changeTheme(ThemeData theme) => Get.changeTheme(theme);
void changeThemeMode(ThemeMode themeMode) => Get.changeThemeMode(themeMode);
ThemeMode _getThemeMode() {
switch (settings.theme) {
case 'system':
return ThemeMode.system;
case 'dark':
return ThemeMode.dark;
default:
return ThemeMode.light;
}
}
void _updateSetting(void Function(Settings) update) {
update(settings);
isar.writeTxnSync(() => isar.settings.putSync(settings));
}
}