修改绑定车辆接口
登录后查询车辆信息
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user