扫码结果处理

This commit is contained in:
2025-11-13 15:56:05 +08:00
parent 5c79a27ac4
commit feedc8c511
5 changed files with 139 additions and 55 deletions

View File

@@ -6,6 +6,9 @@ import 'package:get/get.dart';
import 'package:getx_scaffold/getx_scaffold.dart';
import 'package:image/image.dart' as img;
import 'package:image_picker/image_picker.dart';
import 'package:ln_jq_app/common/model/base_model.dart';
import 'package:ln_jq_app/common/model/vehicle_info.dart';
import 'package:ln_jq_app/storage_service.dart';
import 'package:qr_code_scanner_plus/qr_code_scanner_plus.dart';
import 'package:zxing_lib/common.dart';
import 'package:zxing_lib/qrcode.dart';
@@ -134,28 +137,43 @@ class QrCodeController extends GetxController
showErrorToast('相机权限未被授予,请到权限管理中打开');
}
if (!isPhotosGranted) {
showErrorToast(
'相册权限未被授予,请到权限管理中打开',
);
showErrorToast('相册权限未被授予,请到权限管理中打开');
}
}
//扫码结果处理
void renderResult(String resultStr) {
Get.defaultDialog(
title: "扫描结果",
middleText: resultStr,
onConfirm: () {
Get.back();
resumeScanner();
},
onCancel: () {
resumeScanner();
},
);
void renderResult(String resultStr) async {
showLoading("正在获取车辆信息...");
try {
var responseData = await HttpService.to.get(
"appointment/truck/base-info?vin=$resultStr",
);
if (responseData == null || responseData.data == null) {
showToast('无法获取车辆信息,请检查网络或稍后重试');
resumeScanner();
return;
}
var result = BaseModel.fromJson(responseData.data);
final vehicle = VehicleInfo.fromJson(result.data as Map<String, dynamic>);
//保存使用
await StorageService.to.saveVehicleInfo(vehicle);
Get.back(result: true);
} on DioException catch (e) {
showErrorToast("网络请求失败,请稍后重试");
resumeScanner();
} catch (e, stackTrace) {
showErrorToast("处理失败,请稍后重试");
resumeScanner(); // 未知异常,恢复扫描
} finally {
dismissLoading();
}
}
@override
void onClose() {
qrViewController?.dispose();