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
61 lines
1.7 KiB
import 'package:get/get.dart';
|
|
import 'package:flutter/material.dart';
|
|
import '../../../app/theme/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');
|
|
}
|
|
}
|