Files
windows-application/lib/services/config_service.dart

68 lines
2.0 KiB
Dart
Raw Normal View History

2026-01-22 15:14:27 +08:00
import 'dart:io';
// import 'package:ini/ini.dart';
import '../core/mining_manager.dart';
import '../utils/ini_utils.dart';
import '../utils/path_utils.dart';
class ConfigService {
String get _configFile => PathUtils.binFile('mining.windows.conf');
/// 读取配置文件内容
Future<String> readConfig() async {
try {
final file = File(_configFile);
if (await file.exists()) {
return await file.readAsString();
}
} catch (e) {
// 静默失败,返回空字符串
}
return '';
}
/// 保存配置文件
Future<bool> saveConfig(String content) async {
try {
final file = File(_configFile);
await file.writeAsString(content);
return true;
} catch (e) {
return false;
}
}
/// 解析配置文件并返回 MiningConfig
Future<MiningConfig?> parseMiningConfig() async {
try {
final content = await readConfig();
if (content.isEmpty) {
return null;
}
final config = parseIni(content);
// ini 2.x: 通过 get(section, option) 访问键值
final lolMinerPath = (config.get('lolminer', 'path') ?? '').trim();
final rigelPath = (config.get('rigel', 'path') ?? '').trim();
final bzMinerPath = (config.get('bzminer', 'path') ?? '').trim();
final proxyEnabled = (config.get('proxy', 'proxy') ?? '').toLowerCase() == 'true';
// 读取服务器和更新URL
final serverUrl = (config.get('client', 'server_url') ?? '').trim();
final updateUrl = (config.get('client', 'update_url') ?? '').trim();
return MiningConfig(
lolMinerPath: lolMinerPath.isEmpty ? null : lolMinerPath,
rigelPath: rigelPath.isEmpty ? null : rigelPath,
bzMinerPath: bzMinerPath.isEmpty ? null : bzMinerPath,
proxyEnabled: proxyEnabled,
serverUrl: serverUrl.isEmpty ? null : serverUrl,
updateUrl: updateUrl.isEmpty ? null : updateUrl,
);
} catch (e) {
// 静默失败,返回 null
return null;
}
}
}