fix:修复 ota 选择错误文件没有提示
This commit is contained in:
parent
606cbc76c7
commit
c40a95641a
@ -161,24 +161,52 @@ class LockEscalationLogic extends BaseGetXController {
|
||||
|
||||
// 检查文件头
|
||||
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') {
|
||||
showToast('非SYD固件,请选择正确的文件');
|
||||
return null;
|
||||
}
|
||||
// 解析元数据长度
|
||||
Uint8List metaLenList = data.sublist(12, 16);
|
||||
int metaLen = ByteData.sublistView(metaLenList).getUint32(0);
|
||||
Uint8List metaLenList;
|
||||
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) {
|
||||
showToast('文件校验失败 0x01');
|
||||
return null;
|
||||
}
|
||||
// 读取和解析元数据
|
||||
Uint8List metaStrList = data.sublist(16, 16 + metaLen);
|
||||
String metaStr = utf8.decode(metaStrList);
|
||||
Uint8List metaStrList;
|
||||
String metaStr;
|
||||
try {
|
||||
metaStrList = data.sublist(16, 16 + metaLen);
|
||||
metaStr = utf8.decode(metaStrList);
|
||||
} catch (e) {
|
||||
showToast('解析元数据失败,请选择正确的文件');
|
||||
return null;
|
||||
}
|
||||
AppLog.log(metaStr);
|
||||
var meta = jsonDecode(metaStr);
|
||||
if (meta is! Map) {
|
||||
showToast('解析元数据失败,请选择正确的文件');
|
||||
return null;
|
||||
}
|
||||
return meta..['metaLen'] = metaLen;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user