更新太和e护配置wifi失败问题
This commit is contained in:
@@ -29,14 +29,14 @@ class FirmwareVersionService {
|
||||
try {
|
||||
// 构建完整的API URL
|
||||
final apiUrl = '$baseUrl/~/api/get_file_list?uri=$firmwarePath';
|
||||
|
||||
|
||||
// 发送HTTP请求 - 使用基础的http客户端,不依赖项目特定实现
|
||||
final response = await _makeHttpRequest(apiUrl);
|
||||
|
||||
|
||||
if (response == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
// 解析响应数据
|
||||
return _parseFirmwareData(response, baseUrl, firmwarePath);
|
||||
} catch (e) {
|
||||
@@ -50,14 +50,14 @@ class FirmwareVersionService {
|
||||
try {
|
||||
// 使用基础的http客户端
|
||||
final httpClient = HttpClient();
|
||||
|
||||
|
||||
final request = await httpClient.getUrl(Uri.parse(url));
|
||||
final response = await request.close();
|
||||
|
||||
|
||||
if (response.statusCode != 200) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
final responseBody = await response.transform(utf8.decoder).join();
|
||||
return jsonDecode(responseBody);
|
||||
} catch (e) {
|
||||
@@ -68,14 +68,11 @@ class FirmwareVersionService {
|
||||
|
||||
/// 解析固件数据
|
||||
static FirmwareVersionInfo? _parseFirmwareData(
|
||||
dynamic data,
|
||||
String baseUrl,
|
||||
String firmwarePath
|
||||
) {
|
||||
dynamic data, String baseUrl, String firmwarePath) {
|
||||
if (data == null || data['list'] == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
final versionList = data['list'] as List;
|
||||
int? maxVersionNum;
|
||||
String? latestFileName;
|
||||
@@ -86,10 +83,10 @@ class FirmwareVersionService {
|
||||
try {
|
||||
// 解析版本号 - 假设文件名格式为 "something-version.extension"
|
||||
final versionMatch = _extractVersionFromFileName(fileName);
|
||||
|
||||
|
||||
if (versionMatch != null) {
|
||||
final versionNum = int.parse(versionMatch);
|
||||
|
||||
|
||||
if (maxVersionNum == null || versionNum > maxVersionNum) {
|
||||
maxVersionNum = versionNum;
|
||||
latestFileName = fileName;
|
||||
@@ -104,15 +101,16 @@ class FirmwareVersionService {
|
||||
|
||||
if (latestFileName != null && maxVersionNum != null) {
|
||||
// 构建下载URL
|
||||
final downloadUrl = '$baseUrl/${firmwarePath.replaceFirst('/', '')}$latestFileName';
|
||||
|
||||
final downloadUrl =
|
||||
'$baseUrl/${firmwarePath.replaceFirst('/', '')}$latestFileName';
|
||||
|
||||
return FirmwareVersionInfo(
|
||||
version: maxVersionNum.toString(),
|
||||
fileName: latestFileName,
|
||||
downloadUrl: downloadUrl,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -127,14 +125,63 @@ class FirmwareVersionService {
|
||||
// 格式: firmware_123.bin
|
||||
RegExp(r'_(\d+)\.'),
|
||||
];
|
||||
|
||||
|
||||
for (final pattern in patterns) {
|
||||
final match = pattern.firstMatch(fileName);
|
||||
if (match != null && match.groupCount >= 1) {
|
||||
return match.group(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// 获取所有固件版本(按版本号从大到小排序)
|
||||
static Future<List<FirmwareVersionInfo>> getAllFirmwareVersions({
|
||||
required String baseUrl,
|
||||
required String firmwarePath,
|
||||
}) async {
|
||||
try {
|
||||
final apiUrl = '$baseUrl/~/api/get_file_list?uri=$firmwarePath';
|
||||
final response = await _makeHttpRequest(apiUrl);
|
||||
if (response == null) return [];
|
||||
|
||||
return _parseAllFirmwareData(response, baseUrl, firmwarePath);
|
||||
} catch (e) {
|
||||
print('获取所有固件版本信息失败: $e');
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
/// 解析所有固件版本数据
|
||||
static List<FirmwareVersionInfo> _parseAllFirmwareData(
|
||||
dynamic data, String baseUrl, String firmwarePath) {
|
||||
if (data == null || data['list'] == null) {
|
||||
return [];
|
||||
}
|
||||
|
||||
final versionList = data['list'] as List;
|
||||
final result = <FirmwareVersionInfo>[];
|
||||
|
||||
for (var item in versionList) {
|
||||
if (item is Map && item.containsKey('n')) {
|
||||
final fileName = item['n'] as String;
|
||||
final versionStr = _extractVersionFromFileName(fileName);
|
||||
if (versionStr != null) {
|
||||
final downloadUrl =
|
||||
'$baseUrl/${firmwarePath.replaceFirst('/', '')}$fileName';
|
||||
result.add(FirmwareVersionInfo(
|
||||
version: versionStr,
|
||||
fileName: fileName,
|
||||
downloadUrl: downloadUrl,
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 按版本号从大到小排序
|
||||
result.sort((a, b) => int.parse(b.version).compareTo(int.parse(a.version)));
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user