import 'package:flutter/material.dart'; import 'dart:io'; import 'package:path/path.dart' as path; import 'cof.dart'; class AppConfig { static final AppConfig _instance = AppConfig._internal(); static late ConfigManager _configManager; static late String _configDirectory; factory AppConfig() { return _instance; } AppConfig._internal(); // 初始化配置 static Future init() async { // 获取可执行文件所在目录而不是当前工作目录 _configDirectory = File(Platform.resolvedExecutable).parent.path; final configPath = path.join(_configDirectory, 'config.yaml'); _configManager = ConfigManager( filePath: configPath, defaultConfig: { 'theme': { 'mode': 'system', 'seedColor': Colors.blue.value, }, 'server': { 'list': ['public.easytier.cn:11010'], 'current': 'public.easytier.cn:11010', }, 'room': { 'name': 'kevin', 'password': 'kevin', }, 'user': { 'name': Platform.localHostname, }, 'network': { 'virtualIP': '', 'dynamicIP': true, }, 'system': { 'closeToTray': true, }, }, ); await _configManager.load(); } // 主题设置 ThemeMode get themeMode { final String? value = _configManager.get('theme.mode'); return ThemeMode.values.firstWhere( (mode) => mode.toString() == 'ThemeMode.$value', orElse: () => ThemeMode.system, ); } Future setThemeMode(ThemeMode mode) async { final modeString = mode.toString().split('.').last.toLowerCase(); _configManager.set('theme.mode', modeString); await _configManager.save(); } // 主题色设置 Color get seedColor { final int? value = _configManager.get('theme.seedColor'); return value != null ? Color(value) : Colors.blue; } Future setSeedColor(Color color) async { _configManager.set('theme.seedColor', color.value); await _configManager.save(); } // 服务器列表设置 List get serverList { final List? value = _configManager.get('server.list'); return value?.cast() ?? ['public.easytier.cn:11010']; } Future setServerList(List servers) async { _configManager.set('server.list', servers); await _configManager.save(); } // 当前选中的服务器设置 String get currentServer { return _configManager.get('server.current') ?? 'public.easytier.cn:11010'; } Future setCurrentServer(String server) async { _configManager.set('server.current', server); await _configManager.save(); } // 房间名设置 String get roomName { return _configManager.get('room.name') ?? 'kevin'; } Future setRoomName(String name) async { _configManager.set('room.name', name); await _configManager.save(); } // 房间密码设置 String get roomPassword { return _configManager.get('room.password') ?? 'kevin'; } Future setRoomPassword(String password) async { _configManager.set('room.password', password); await _configManager.save(); } // 用户名设置 String get username { return _configManager.get('user.name') ?? Platform.localHostname; } Future setUsername(String name) async { _configManager.set('user.name', name); await _configManager.save(); } // 虚拟IP设置 String get virtualIP { return _configManager.get('network.virtualIP') ?? ''; } Future setVirtualIP(String ip) async { _configManager.set('network.virtualIP', ip); await _configManager.save(); } // 关闭按钮进入托盘 bool get closeToTray { return _configManager.get('system.closeToTray') ?? true; } Future setCloseToTray(bool enabled) async { _configManager.set('system.closeToTray', enabled); await _configManager.save(); } // 动态获取IP设置 bool get dynamicIP { return _configManager.get('network.dynamicIP') ?? true; } Future setDynamicIP(bool enabled) async { _configManager.set('network.dynamicIP', enabled); await _configManager.save(); } }