259 lines
14 KiB
Dart
259 lines
14 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:ride/constant/colors.dart';
|
|
import 'package:ride/constant/style.dart';
|
|
import 'package:ride/constant/table_names.dart';
|
|
import 'package:ride/controller/functions/ocr_controller.dart';
|
|
import 'package:ride/main.dart';
|
|
import 'package:ride/views/auth/captin/car_license_page.dart';
|
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
|
import 'package:ride/views/widgets/my_scafold.dart';
|
|
import 'package:ride/views/widgets/mycircular.dart';
|
|
|
|
class AiPage extends StatelessWidget {
|
|
ScanDocumentsByApi scanDocumentsByApi = Get.put(ScanDocumentsByApi());
|
|
|
|
AiPage({super.key});
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MyScafolld(
|
|
title: 'AI Page'.tr,
|
|
body: [
|
|
Positioned(
|
|
top: 3,
|
|
left: Get.width * .2,
|
|
right: Get.width * .2,
|
|
child: MyElevatedButton(
|
|
title: 'Take Picture Of ID Card'.tr,
|
|
onPressed: () {
|
|
scanDocumentsByApi.scanDocumentsByApi();
|
|
},
|
|
)),
|
|
GetBuilder<ScanDocumentsByApi>(
|
|
builder: (scanDocumentsByApi) => scanDocumentsByApi
|
|
.responseMap.isNotEmpty
|
|
? Positioned(
|
|
top: Get.height * .06,
|
|
left: Get.width * .051,
|
|
right: Get.width * .051,
|
|
child: scanDocumentsByApi.isLoading
|
|
? Column(
|
|
children: [
|
|
const MyCircularProgressIndicator(),
|
|
Text(
|
|
'We are process picture please wait '.tr,
|
|
style: AppStyle.title,
|
|
)
|
|
],
|
|
)
|
|
: Column(
|
|
children: [
|
|
Container(
|
|
decoration: AppStyle.boxDecoration,
|
|
height: Get.height * .4,
|
|
child: Padding(
|
|
padding: const EdgeInsets.all(5),
|
|
child: scanDocumentsByApi.responseMap.isEmpty
|
|
? Center(
|
|
child: Text(
|
|
'There is no data yet.'.tr,
|
|
style: AppStyle.title,
|
|
),
|
|
)
|
|
: Column(
|
|
mainAxisAlignment:
|
|
MainAxisAlignment.spaceBetween,
|
|
crossAxisAlignment:
|
|
CrossAxisAlignment.start,
|
|
children: [
|
|
Row(
|
|
mainAxisAlignment:
|
|
MainAxisAlignment
|
|
.spaceBetween,
|
|
children: <Widget>[
|
|
Column(
|
|
mainAxisAlignment:
|
|
MainAxisAlignment.start,
|
|
crossAxisAlignment:
|
|
CrossAxisAlignment.start,
|
|
children: [
|
|
Text(
|
|
'Name :${scanDocumentsByApi.name}',
|
|
style: AppStyle.subtitle,
|
|
),
|
|
Row(
|
|
mainAxisAlignment:
|
|
MainAxisAlignment
|
|
.spaceBetween,
|
|
children: [
|
|
Text(
|
|
'Drivers License Class: ${scanDocumentsByApi.licenseClass}',
|
|
style: AppStyle.title,
|
|
),
|
|
Image.memory(
|
|
scanDocumentsByApi
|
|
.imageSignature,
|
|
width: 100,
|
|
height: 30,
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
Row(
|
|
mainAxisAlignment:
|
|
MainAxisAlignment
|
|
.spaceBetween,
|
|
children: [
|
|
Text(
|
|
'Document Number: ${scanDocumentsByApi.documentNo}',
|
|
style: AppStyle.title,
|
|
),
|
|
Image.memory(
|
|
scanDocumentsByApi
|
|
.imagePortrait,
|
|
width: 60,
|
|
),
|
|
]),
|
|
Text(
|
|
'Address: ${scanDocumentsByApi.address}',
|
|
style: AppStyle.title,
|
|
),
|
|
Row(
|
|
mainAxisAlignment:
|
|
MainAxisAlignment
|
|
.spaceBetween,
|
|
children: [
|
|
Text(
|
|
'Height: ${scanDocumentsByApi.height}',
|
|
style: AppStyle.subtitle,
|
|
),
|
|
Text(
|
|
'Postal Code: ${scanDocumentsByApi.postalCode}',
|
|
style: AppStyle.subtitle,
|
|
),
|
|
Text(
|
|
'Sex: ${scanDocumentsByApi.sex}',
|
|
style: AppStyle.subtitle,
|
|
),
|
|
],
|
|
),
|
|
Text(
|
|
'Territorial Code: ${scanDocumentsByApi.stateCode}',
|
|
style: AppStyle.subtitle,
|
|
),
|
|
Row(
|
|
mainAxisAlignment:
|
|
MainAxisAlignment
|
|
.spaceBetween,
|
|
children: [
|
|
Text(
|
|
'Expiry Date: ${scanDocumentsByApi.expireDate}',
|
|
style: DateTime.parse(
|
|
scanDocumentsByApi
|
|
.responseMap['data']
|
|
['ocr'][
|
|
'dateOfExpiry']
|
|
.toString())
|
|
.isBefore(
|
|
scanDocumentsByApi
|
|
.now)
|
|
? AppStyle.title.copyWith(
|
|
color:
|
|
AppColor.redColor)
|
|
: AppStyle.title.copyWith(
|
|
color: AppColor
|
|
.greenColor),
|
|
),
|
|
Text(
|
|
'Date of Birth: ${scanDocumentsByApi.dob}',
|
|
style: AppStyle.title,
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
DateTime.parse(scanDocumentsByApi
|
|
.responseMap['data']['ocr']
|
|
['dateOfExpiry']
|
|
.toString())
|
|
.isBefore(scanDocumentsByApi.now)
|
|
? Text(
|
|
'You can\'t continue with us .\nYou should renew Driver license',
|
|
style: AppStyle.title
|
|
.copyWith(color: AppColor.redColor),
|
|
)
|
|
: MyElevatedButton(
|
|
title: 'Detect Your Face '.tr,
|
|
onPressed: () => scanDocumentsByApi
|
|
.checkMatchFaceApi(),
|
|
),
|
|
scanDocumentsByApi.res.isEmpty
|
|
? const SizedBox()
|
|
: scanDocumentsByApi.res['data']['result']
|
|
.toString() ==
|
|
'Same'
|
|
? MyElevatedButton(
|
|
onPressed: () =>
|
|
Get.to(() => CarLicensePage()),
|
|
title:
|
|
'Go to next step\nscan Car License.'
|
|
.tr,
|
|
kolor: AppColor.greenColor,
|
|
)
|
|
: const SizedBox(),
|
|
MyElevatedButton(
|
|
title: 'get sql data',
|
|
kolor: AppColor.yellowColor,
|
|
onPressed: () {
|
|
sql.deleteAllData(TableName.faceDetectTimes);
|
|
sql
|
|
.getAllData(TableName.faceDetectTimes)
|
|
.then((value) =>
|
|
print(value[0]['faceDetectTimes']));
|
|
},
|
|
)
|
|
],
|
|
),
|
|
)
|
|
: Positioned(
|
|
top: Get.height * .06,
|
|
left: Get.width * .051,
|
|
right: Get.width * .051,
|
|
child: scanDocumentsByApi.isLoading
|
|
? Column(
|
|
children: [
|
|
const MyCircularProgressIndicator(),
|
|
Text(
|
|
'We are process picture please wait '.tr,
|
|
style: AppStyle.title,
|
|
)
|
|
],
|
|
)
|
|
: Column(
|
|
children: [
|
|
Container(
|
|
decoration: AppStyle.boxDecoration,
|
|
height: Get.height * .35,
|
|
child: Padding(
|
|
padding: const EdgeInsets.all(5),
|
|
child: Center(
|
|
child: Text(
|
|
'There is no data yet.'.tr,
|
|
style: AppStyle.title,
|
|
),
|
|
)),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
],
|
|
isleading: true);
|
|
}
|
|
}
|