You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.7 KiB

import 'package:get/get.dart';
import 'package:flutter/material.dart';
import '../../../core/themes/theme_service.dart';
class SettingsController extends GetxController {
// 主题服务
final ThemeService _themeService = ThemeService();
// 是否是暗黑模式
final RxBool isDarkMode = false.obs;
// 翻译语言对
final RxString sourceLanguage = '中文'.obs;
final RxString targetLanguage = '英文'.obs;
final List<String> availableLanguages = ['中文', '英文', '日文', '韩文', '法文', '德文', '西班牙文', '俄文'];
@override
void onInit() {
super.onInit();
// 从存储中加载上次保存的主题设置
final savedDarkMode = _themeService.isSavedDarkMode();
// 设置当前主题状态
isDarkMode.value = savedDarkMode;
}
// 切换主题
void toggleTheme() {
// 切换暗黑模式状态
isDarkMode.value = !isDarkMode.value;
// 更新全局主题
Get.changeThemeMode(isDarkMode.value ? ThemeMode.dark : ThemeMode.light);
// 保存用户选择的主题设置 - 确保立即写入存储
_themeService.saveThemeMode(isDarkMode.value);
// 打印日志,确认主题已保存
print('主题已切换,当前模式: ${isDarkMode.value ? "暗黑" : "浅色"}');
}
void setSourceLanguage(String language) {
sourceLanguage.value = language;
}
void setTargetLanguage(String language) {
targetLanguage.value = language;
}
void swapLanguages() {
final temp = sourceLanguage.value;
sourceLanguage.value = targetLanguage.value;
targetLanguage.value = temp;
}
void signOut() {
// 在此实现退出登录逻辑
Get.offAllNamed('/login');
}
}