fix:修复 ota 选择错误文件没有提示

This commit is contained in:
anfe 2024-04-29 17:24:58 +08:00
parent 606cbc76c7
commit c40a95641a

View File

@ -161,24 +161,52 @@ class LockEscalationLogic extends BaseGetXController {
// //
Future<Map?> getHeadFile(Uint8List data) async { Future<Map?> getHeadFile(Uint8List data) async {
if (data.length <= 16) {
showToast('错误D固件请选择正确的文件');
return null;
}
// //
String header = utf8.decode(data.sublist(0, 12)); String header;
try {
header = utf8.decode(data.sublist(0, 12));
} catch (e) {
showToast('非SYD固件请选择正确的文件');
return null;
}
if (header != 'SYD-BIN-DATA') { if (header != 'SYD-BIN-DATA') {
showToast('非SYD固件请选择正确的文件'); showToast('非SYD固件请选择正确的文件');
return null; return null;
} }
// //
Uint8List metaLenList = data.sublist(12, 16); Uint8List metaLenList;
int metaLen = ByteData.sublistView(metaLenList).getUint32(0); int metaLen;
try {
metaLenList = data.sublist(12, 16);
metaLen = ByteData.sublistView(metaLenList).getUint32(0);
} catch (e) {
showToast('文件校验失败 0x01');
return null;
}
if (metaLen < 2 || metaLen > 10240) { if (metaLen < 2 || metaLen > 10240) {
showToast('文件校验失败 0x01'); showToast('文件校验失败 0x01');
return null; return null;
} }
// //
Uint8List metaStrList = data.sublist(16, 16 + metaLen); Uint8List metaStrList;
String metaStr = utf8.decode(metaStrList); String metaStr;
try {
metaStrList = data.sublist(16, 16 + metaLen);
metaStr = utf8.decode(metaStrList);
} catch (e) {
showToast('解析元数据失败,请选择正确的文件');
return null;
}
AppLog.log(metaStr); AppLog.log(metaStr);
var meta = jsonDecode(metaStr); var meta = jsonDecode(metaStr);
if (meta is! Map) {
showToast('解析元数据失败,请选择正确的文件');
return null;
}
return meta..['metaLen'] = metaLen; return meta..['metaLen'] = metaLen;
} }