修改绑定车辆接口

登录后查询车辆信息
This commit is contained in:
2025-12-17 09:18:34 +08:00
parent 98cac8a0a5
commit fe2ce75cec
4 changed files with 95 additions and 33 deletions

View File

@@ -2,7 +2,6 @@ import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
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';
@@ -125,14 +124,12 @@ class QrCodeController extends GetxController
}
void requestPermission() async {
if(Platform.isIOS){
if (Platform.isIOS) {
var status = await Permission.camera.request();
if (status.isGranted) {
}
else if (status.isPermanentlyDenied) {
} else if (status.isPermanentlyDenied) {
openAppSettings();
}
else {
} else {
showErrorToast('需要相机权限才能扫描二维码');
}
return;
@@ -153,36 +150,51 @@ class QrCodeController extends GetxController
scanFromGallery();
}
}
if(Platform.isIOS){
if (Platform.isIOS) {
var status = await Permission.photos.request();
print("权限状态: $status"); // 在控制台看这个输出
if (status.isGranted) {
scanFromGallery();
}
else if (status.isPermanentlyDenied) {
} else if (status.isPermanentlyDenied) {
openAppSettings();
}
else {
} else {
showErrorToast('需要相册权限才能从相册中选择图片');
}
}
}
//扫码结果处理
void renderResult(String resultStr) async {
//扫码结果处理 //如果绑定接口返回的data为null 需要手动编辑车牌
void renderResult(String resultStr, {plateNumber}) async {
showLoading("正在获取车辆信息...");
try {
var responseData = await HttpService.to.get(
/*var responseData = await HttpService.to.get(
"appointment/truck/base-info?vin=$resultStr",
);*/
final Map<String, dynamic> requestData = {
"code": resultStr,
"phone": StorageService.to.phone,
};
if (plateNumber != null && plateNumber.isNotEmpty) {
requestData['plateNumber'] = plateNumber;
}
var responseData = await HttpService.to.post(
"appointment/truck/bindTruck",
data: requestData,
);
if (responseData == null || responseData.data == null) {
if (responseData == null) {
showToast('无法获取车辆信息,请检查网络或稍后重试');
resumeScanner();
return;
}
var result = BaseModel.fromJson(responseData.data);
if (result.data == null) {
showBindDialog(resultStr);
return;
}
final vehicle = VehicleInfo.fromJson(result.data as Map<String, dynamic>);
//保存使用
await StorageService.to.saveVehicleInfo(vehicle);
@@ -199,6 +211,34 @@ class QrCodeController extends GetxController
}
}
void showBindDialog(String resultStr) {
final TextEditingController plateNumberController = TextEditingController();
DialogX.to.showNoticeDialog(
icon: DialogIcon.info,
title: '请输入车牌号',
barrierDismissible: false,
content: TextField(
controller: plateNumberController, // 绑定 controller
autofocus: false, // 弹窗出现时自动获取焦点,方便用户直接输入
decoration: const InputDecoration(
hintText: '请输入完整的车牌号',
border: OutlineInputBorder(),
contentPadding: EdgeInsets.symmetric(horizontal: 12.0),
),
),
confirmText: '确认',
onConfirm: () {
final String plateNumber = plateNumberController.text.trim();
if (plateNumber.isEmpty) {
resumeScanner();
showToast("请输入车牌号");
return;
}
renderResult(resultStr, plateNumber: plateNumber);
},
);
}
@override
void onClose() {
qrViewController?.dispose();