import 'package:get/get.dart'; import 'package:flutter/material.dart'; import '../../../core/themes/theme_service.dart'; import '../../../data/services/speech_factory.dart'; class SettingsController extends GetxController { // 主题服务 final ThemeService _themeService = ThemeService(); // 是否是暗黑模式 final RxBool isDarkMode = false.obs; // 翻译语言对 final RxString sourceLanguage = '中文'.obs; final RxString targetLanguage = '英文'.obs; final List availableLanguages = ['中文', '英文', '日文', '韩文', '法文', '德文', '西班牙文', '俄文']; // 语音服务类型 final Rx speechServiceType = SpeechServiceType.azure.obs; final List> availableSpeechServices = [ {'type': SpeechServiceType.azure, 'name': 'Azure 语音服务', 'description': '微软云端语音服务,支持高质量语音合成和识别'}, {'type': SpeechServiceType.flutter, 'name': 'Flutter 本地语音服务', 'description': '设备本地语音服务,无需联网即可使用'}, ]; @override void onInit() { super.onInit(); // 从存储中加载上次保存的主题设置 final savedDarkMode = _themeService.isSavedDarkMode(); // 设置当前主题状态 isDarkMode.value = savedDarkMode; // 获取当前语音服务类型 _loadCurrentSpeechServiceType(); } // 加载当前语音服务类型 void _loadCurrentSpeechServiceType() { try { final factory = Get.find(); speechServiceType.value = factory.currentServiceType; } catch (e) { // 如果找不到SpeechFactory实例,使用默认值 } } // 切换主题 Future toggleTheme() async { // 切换暗黑模式状态 isDarkMode.value = !isDarkMode.value; // 更新全局主题 Get.changeThemeMode(isDarkMode.value ? ThemeMode.dark : ThemeMode.light); // 保存用户选择的主题设置 - 确保立即写入存储 await _themeService.saveThemeMode(isDarkMode.value); } // 设置语音服务类型 void setSpeechServiceType(SpeechServiceType type) { try { final factory = Get.find(); factory.setServiceType(type); speechServiceType.value = type; } catch (e) { // 处理错误 } } 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'); } }