import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:logger/logger.dart'; import 'package:flutter/services.dart'; /// 配置服务,用于管理应用配置和环境变量 class ConfigService extends GetxService { final Logger _logger = Logger(); late final SharedPreferences _prefs; // 创建一个 MethodChannel 用于与原生代码通信 static const MethodChannel _channel = MethodChannel('com.example.deep_voice/config'); // 初始化服务 Future init() async { try { _prefs = await SharedPreferences.getInstance(); // 从 .env 读取 Azure 语音服务配置 final azureSpeechKey = dotenv.env['AZURE_ASR_SUBSCRIPTION_KEY']; final azureSpeechRegion = dotenv.env['AZURE_ASR_SERVICE_REGION']; // 从 .env 读取火山 AI API Key final volcanoAiApiKey = dotenv.env['VOLCANO_AI_API_KEY']; // 通过 MethodChannel 向原生代码传递配置值 try { await _channel.invokeMethod('setConfig', { 'azure_speech_key': azureSpeechKey ?? '', 'azure_speech_region': azureSpeechRegion ?? '', 'volcano_ai_api_key': volcanoAiApiKey ?? '', }); _logger.i('已通过 MethodChannel 向原生代码传递配置值'); } catch (e) { _logger.e('通过 MethodChannel 传递配置值失败: $e'); } return this; } catch (e) { _logger.e('初始化配置服务失败: $e'); rethrow; } } // 获取配置值 String? getString(String key) { return _prefs.getString(key); } // 设置配置值 Future setString(String key, String value) { return _prefs.setString(key, value); } }