11/1/9
This commit is contained in:
@@ -55,8 +55,8 @@ android {
|
|||||||
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
|
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
|
||||||
minSdkVersion 23
|
minSdkVersion 23
|
||||||
targetSdkVersion flutter.targetSdkVersion
|
targetSdkVersion flutter.targetSdkVersion
|
||||||
versionCode 8
|
versionCode 10
|
||||||
versionName '1.0.8'
|
versionName '1.1.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"files": [
|
|
||||||
"eng.traineddata",
|
|
||||||
"ara.traineddata"
|
|
||||||
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -6,6 +6,7 @@ class BoxName {
|
|||||||
static const String password = "password";
|
static const String password = "password";
|
||||||
static const String passwordDriver = "passwordDriver";
|
static const String passwordDriver = "passwordDriver";
|
||||||
static const String agreeTerms = "agreeTerms";
|
static const String agreeTerms = "agreeTerms";
|
||||||
|
static const String faceDetectTimes = "faceDetectTimes";
|
||||||
static const String sosPhonePassenger = "sosPhonePassenger";
|
static const String sosPhonePassenger = "sosPhonePassenger";
|
||||||
static const String passengerID = "pasengerID";
|
static const String passengerID = "pasengerID";
|
||||||
static const String phone = "phone";
|
static const String phone = "phone";
|
||||||
|
|||||||
@@ -10,13 +10,18 @@ class AppCredintials {
|
|||||||
static const String twilloRecoveryCode = 'TQF13XUVU2NJ3VFU8JWBWYBS';
|
static const String twilloRecoveryCode = 'TQF13XUVU2NJ3VFU8JWBWYBS';
|
||||||
static const String accountSIDTwillo = 'ACb4ad857efe0903bfd6238a763a2ce4d1';
|
static const String accountSIDTwillo = 'ACb4ad857efe0903bfd6238a763a2ce4d1';
|
||||||
static const String authTokenTwillo = '14f39ef4628bb8a4f18469f462f8af75';
|
static const String authTokenTwillo = '14f39ef4628bb8a4f18469f462f8af75';
|
||||||
static const String Publishablekey = '14f39ef4628bb8a4f18469f462f8af75';
|
static const String publishablekey = '14f39ef4628bb8a4f18469f462f8af75';
|
||||||
|
static const String chatGPTkey =
|
||||||
|
'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';
|
||||||
|
static const String chatGPTkeySefer =
|
||||||
|
'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';
|
||||||
String getBasicAuthCredentials() {
|
String getBasicAuthCredentials() {
|
||||||
return base64Encode(utf8.encode(basicAuthCredentials));
|
return base64Encode(utf8.encode(basicAuthCredentials));
|
||||||
}
|
}
|
||||||
|
|
||||||
static const String transactionCloude =
|
static const String transactionCloude =
|
||||||
'Authorization:API_EMDJX6BHQ67DBGT6WV:DG2XPU7YEN02M0VJ2F';
|
'Authorization:API_EMDJX6BHQ67DBGT6WV:DG2XPU7YEN02M0VJ2F';
|
||||||
|
static const String visionApi = '0vQRyaYYDWpsv73A5CZOknseK7S2sgwE';
|
||||||
}
|
}
|
||||||
|
|
||||||
class StripeKey {
|
class StripeKey {
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ class AppLink {
|
|||||||
//-----------------DriverPayment------------------
|
//-----------------DriverPayment------------------
|
||||||
static const String addDriverpayment = "$ride/payment/add.php";
|
static const String addDriverpayment = "$ride/payment/add.php";
|
||||||
static const String getDriverpaymentToday = "$ride/payment/get.php";
|
static const String getDriverpaymentToday = "$ride/payment/get.php";
|
||||||
|
static const String getAllPayment = "$ride/payment/getAllPayment.php";
|
||||||
|
|
||||||
//-----------------DriverOrder------------------
|
//-----------------DriverOrder------------------
|
||||||
|
|
||||||
|
|||||||
@@ -2,4 +2,5 @@ class TableName {
|
|||||||
static const String placesFavorite = "placesFavorite";
|
static const String placesFavorite = "placesFavorite";
|
||||||
static const String carLocations = "carLocations";
|
static const String carLocations = "carLocations";
|
||||||
static const String driverOrdersRefuse = "driverOrdersRefuse";
|
static const String driverOrdersRefuse = "driverOrdersRefuse";
|
||||||
|
static const String faceDetectTimes = "faceDetectTimes";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ class LoginCaptinController extends GetxController {
|
|||||||
box.write(BoxName.phoneDriver, jsonDecoeded['data'][0]['phone']);
|
box.write(BoxName.phoneDriver, jsonDecoeded['data'][0]['phone']);
|
||||||
SecureStorage()
|
SecureStorage()
|
||||||
.saveData(BoxName.passwordDriver, passwordController.text);
|
.saveData(BoxName.passwordDriver, passwordController.text);
|
||||||
Get.offAll(() => const HomeCaptain());
|
Get.offAll(() => HomeCaptain());
|
||||||
isloading = false;
|
isloading = false;
|
||||||
update();
|
update();
|
||||||
print(box.read(BoxName.driverID).toString());
|
print(box.read(BoxName.driverID).toString());
|
||||||
@@ -101,7 +101,7 @@ class LoginCaptinController extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loginByBoxData() async {
|
void loginByBoxData() async {
|
||||||
Get.to(() => const HomeCaptain());
|
Get.to(() => HomeCaptain());
|
||||||
await CRUD().post(link: AppLink.addTokensDriver, payload: {
|
await CRUD().post(link: AppLink.addTokensDriver, payload: {
|
||||||
'token': box.read(BoxName.tokenDriver).toString(),
|
'token': box.read(BoxName.tokenDriver).toString(),
|
||||||
'captain_id': box.read(BoxName.driverID).toString()
|
'captain_id': box.read(BoxName.driverID).toString()
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class RegisterController extends GetxController {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
sendverfications() async {
|
sendVerifications() async {
|
||||||
var res = await CRUD().post(link: AppLink.verifyEmail, payload: {
|
var res = await CRUD().post(link: AppLink.verifyEmail, payload: {
|
||||||
'email': emailController.text,
|
'email': emailController.text,
|
||||||
'token': verfyCode.text,
|
'token': verfyCode.text,
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import 'dart:convert';
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:camera/camera.dart';
|
import 'package:camera/camera.dart';
|
||||||
import 'package:flutter_tesseract_ocr/flutter_tesseract_ocr.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart';
|
import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart';
|
||||||
import 'package:ride/constant/box_name.dart';
|
import 'package:ride/constant/box_name.dart';
|
||||||
@@ -193,49 +192,49 @@ class CameraClassController extends GetxController {
|
|||||||
return text.split('\n');
|
return text.split('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> takePictureAndTesseractScan() async {
|
// Future<void> takePictureAndTesseractScan() async {
|
||||||
try {
|
// try {
|
||||||
// Construct the path for the image file
|
// // Construct the path for the image file
|
||||||
final directory = await path_provider.getTemporaryDirectory();
|
// final directory = await path_provider.getTemporaryDirectory();
|
||||||
final imagePath =
|
// final imagePath =
|
||||||
path.join(directory.path, '${box.read(BoxName.driverID)}.png');
|
// path.join(directory.path, '${box.read(BoxName.driverID)}.png');
|
||||||
|
|
||||||
// Capture the image and save it to the specified path
|
// // Capture the image and save it to the specified path
|
||||||
final XFile capturedImage = await cameraController.takePicture();
|
// final XFile capturedImage = await cameraController.takePicture();
|
||||||
|
|
||||||
// Move the captured image to the desired path
|
// // Move the captured image to the desired path
|
||||||
await capturedImage.saveTo(imagePath);
|
// await capturedImage.saveTo(imagePath);
|
||||||
|
|
||||||
// Recognize the text in the image
|
// // Recognize the text in the image
|
||||||
final languages = [
|
// final languages = [
|
||||||
'eng',
|
// 'eng',
|
||||||
'ara'
|
// 'ara'
|
||||||
]; // Specify the languages you want to use for text extraction
|
// ]; // Specify the languages you want to use for text extraction
|
||||||
|
|
||||||
final text = await FlutterTesseractOcr.extractText(imagePath,
|
// final text = await FlutterTesseractOcr.extractText(imagePath,
|
||||||
language: languages.join('+'), // Combine multiple languages with '+'
|
// language: languages.join('+'), // Combine multiple languages with '+'
|
||||||
args: {
|
// args: {
|
||||||
"psm": "4",
|
// "psm": "4",
|
||||||
"preserve_interword_spaces": "1",
|
// "preserve_interword_spaces": "1",
|
||||||
// "rectangle": const Rect.fromLTWH(100, 100, 200, 200),
|
// // "rectangle": const Rect.fromLTWH(100, 100, 200, 200),
|
||||||
} // Additional options if needed
|
// } // Additional options if needed
|
||||||
);
|
// );
|
||||||
isloading = false;
|
// isloading = false;
|
||||||
final jsonText = getTextAsJSON(text);
|
// final jsonText = getTextAsJSON(text);
|
||||||
final textBlocks = getTextBlocks(text);
|
// final textBlocks = getTextBlocks(text);
|
||||||
update();
|
// update();
|
||||||
scannedText =
|
// scannedText =
|
||||||
textBlocks.toString(); // Convert the extracted text to JSON.
|
// textBlocks.toString(); // Convert the extracted text to JSON.
|
||||||
|
|
||||||
// Print the JSON to the console.
|
// // Print the JSON to the console.
|
||||||
print(jsonText);
|
// print(jsonText);
|
||||||
update();
|
// update();
|
||||||
// print(text);
|
// // print(text);
|
||||||
} catch (e) {
|
// } catch (e) {
|
||||||
print('Error during text extraction: $e');
|
// print('Error during text extraction: $e');
|
||||||
scannedText = '';
|
// scannedText = '';
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,7 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||||
import 'package:ride/constant/box_name.dart';
|
import 'package:ride/constant/box_name.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
@@ -15,13 +16,24 @@ class HomeCaptainController extends GetxController {
|
|||||||
Duration activeDuration = Duration.zero;
|
Duration activeDuration = Duration.zero;
|
||||||
Timer? activeTimer;
|
Timer? activeTimer;
|
||||||
Map data = {};
|
Map data = {};
|
||||||
|
bool isLoading = true;
|
||||||
String totalMoneyToday = '0';
|
String totalMoneyToday = '0';
|
||||||
String totalMoneyInSEFER = '0';
|
String totalMoneyInSEFER = '0';
|
||||||
String totalDurationToday = '0';
|
String totalDurationToday = '0';
|
||||||
Timer? timer;
|
Timer? timer;
|
||||||
|
bool mapType = false;
|
||||||
|
bool mapTrafficON = false;
|
||||||
|
double widthMapTypeAndTraffic = 50;
|
||||||
// Inject the LocationController class
|
// Inject the LocationController class
|
||||||
final locationController = Get.find<LocationController>();
|
final locationController = Get.put(LocationController());
|
||||||
|
String formatDuration(Duration duration) {
|
||||||
|
String twoDigits(int n) => n.toString().padLeft(2, "0");
|
||||||
|
String twoDigitMinutes = twoDigits(duration.inMinutes.remainder(60));
|
||||||
|
String twoDigitSeconds = twoDigits(duration.inSeconds.remainder(60));
|
||||||
|
return "${duration.inHours}:$twoDigitMinutes:$twoDigitSeconds";
|
||||||
|
}
|
||||||
|
|
||||||
|
String stringActiveDuration = '';
|
||||||
void onButtonSelected() {
|
void onButtonSelected() {
|
||||||
isActive = !isActive;
|
isActive = !isActive;
|
||||||
if (isActive) {
|
if (isActive) {
|
||||||
@@ -29,6 +41,7 @@ class HomeCaptainController extends GetxController {
|
|||||||
activeStartTime = DateTime.now();
|
activeStartTime = DateTime.now();
|
||||||
activeTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
|
activeTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
|
||||||
activeDuration = DateTime.now().difference(activeStartTime!);
|
activeDuration = DateTime.now().difference(activeStartTime!);
|
||||||
|
stringActiveDuration = formatDuration(activeDuration);
|
||||||
update();
|
update();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -42,6 +55,27 @@ class HomeCaptainController extends GetxController {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void changeMapType() {
|
||||||
|
mapType = !mapType;
|
||||||
|
// heightButtomSheetShown = isButtomSheetShown == true ? 240 : 0;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void changeMapTraffic() {
|
||||||
|
mapTrafficON = !mapTrafficON;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
GoogleMapController? mapHomeCaptaiController;
|
||||||
|
void onMapCreated(GoogleMapController controller) {
|
||||||
|
mapHomeCaptaiController = controller;
|
||||||
|
controller.getVisibleRegion();
|
||||||
|
controller.animateCamera(
|
||||||
|
CameraUpdate.newLatLng(locationController.myLocation),
|
||||||
|
);
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
void savePeriod(Duration period) {
|
void savePeriod(Duration period) {
|
||||||
final periods = box.read<List<dynamic>>(BoxName.periods) ?? [];
|
final periods = box.read<List<dynamic>>(BoxName.periods) ?? [];
|
||||||
periods.add(period.inSeconds);
|
periods.add(period.inSeconds);
|
||||||
@@ -72,7 +106,9 @@ class HomeCaptainController extends GetxController {
|
|||||||
@override
|
@override
|
||||||
void onInit() async {
|
void onInit() async {
|
||||||
addToken();
|
addToken();
|
||||||
|
onButtonSelected();
|
||||||
getPaymentToday();
|
getPaymentToday();
|
||||||
|
getAllPayment();
|
||||||
startPeriodicExecution();
|
startPeriodicExecution();
|
||||||
super.onInit();
|
super.onInit();
|
||||||
}
|
}
|
||||||
@@ -91,6 +127,16 @@ class HomeCaptainController extends GetxController {
|
|||||||
payload: {'driverID': box.read(BoxName.driverID).toString()});
|
payload: {'driverID': box.read(BoxName.driverID).toString()});
|
||||||
data = jsonDecode(res);
|
data = jsonDecode(res);
|
||||||
totalMoneyToday = data['message'][0]['todayAmount'];
|
totalMoneyToday = data['message'][0]['todayAmount'];
|
||||||
|
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
getAllPayment() async {
|
||||||
|
var res = await CRUD().get(
|
||||||
|
link: AppLink.getAllPayment,
|
||||||
|
payload: {'driverID': box.read(BoxName.driverID).toString()});
|
||||||
|
data = jsonDecode(res);
|
||||||
|
|
||||||
totalMoneyInSEFER = data['message'][0]['total_amount'];
|
totalMoneyInSEFER = data['message'][0]['total_amount'];
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|||||||
75
lib/controller/home/captin/widget/left_menu_map_captain.dart
Normal file
75
lib/controller/home/captin/widget/left_menu_map_captain.dart
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_font_icons/flutter_font_icons.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:ride/controller/home/captin/home_captain_controller.dart';
|
||||||
|
|
||||||
|
import '../../../../constant/colors.dart';
|
||||||
|
import '../../../../views/Rate/ride_calculate_driver.dart';
|
||||||
|
|
||||||
|
GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
|
||||||
|
return GetBuilder<HomeCaptainController>(
|
||||||
|
builder: (controller) => Positioned(
|
||||||
|
bottom: Get.height * .17,
|
||||||
|
left: 6,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
AnimatedContainer(
|
||||||
|
duration: const Duration(microseconds: 200),
|
||||||
|
width: controller.widthMapTypeAndTraffic,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border.all(),
|
||||||
|
color: AppColor.secondaryColor,
|
||||||
|
borderRadius: BorderRadius.circular(15)),
|
||||||
|
child: IconButton(
|
||||||
|
onPressed: () {
|
||||||
|
controller.changeMapType();
|
||||||
|
// Toast.show(context, 'This is a toast message!');
|
||||||
|
},
|
||||||
|
icon: const Icon(
|
||||||
|
Icons.satellite_alt,
|
||||||
|
size: 29,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 5,
|
||||||
|
),
|
||||||
|
AnimatedContainer(
|
||||||
|
duration: const Duration(microseconds: 200),
|
||||||
|
width: controller.widthMapTypeAndTraffic,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.secondaryColor,
|
||||||
|
border: Border.all(),
|
||||||
|
borderRadius: BorderRadius.circular(15)),
|
||||||
|
child: IconButton(
|
||||||
|
onPressed: () {
|
||||||
|
controller.changeMapTraffic();
|
||||||
|
// Toast.show(context, 'This is a toast message!');
|
||||||
|
},
|
||||||
|
icon: const Icon(
|
||||||
|
Icons.streetview_sharp,
|
||||||
|
size: 29,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 5,
|
||||||
|
),
|
||||||
|
AnimatedContainer(
|
||||||
|
duration: const Duration(microseconds: 200),
|
||||||
|
width: controller.widthMapTypeAndTraffic,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.secondaryColor,
|
||||||
|
border: Border.all(),
|
||||||
|
borderRadius: BorderRadius.circular(15)),
|
||||||
|
child: IconButton(
|
||||||
|
onPressed: () {
|
||||||
|
Get.to(() => const RideCalculateDriver());
|
||||||
|
},
|
||||||
|
icon: const Icon(FontAwesome5.chart_bar),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -52,7 +52,7 @@ class SplashScreenController extends GetxController
|
|||||||
: box.read(BoxName.emailDriver) == null
|
: box.read(BoxName.emailDriver) == null
|
||||||
? Get.off(() => LoginPage())
|
? Get.off(() => LoginPage())
|
||||||
: box.read(BoxName.emailDriver) != null
|
: box.read(BoxName.emailDriver) != null
|
||||||
? Get.off(() => const HomeCaptain())
|
? Get.off(() => HomeCaptain())
|
||||||
: Get.off(() => LoginCaptin());
|
: Get.off(() => LoginCaptin());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import 'package:ride/views/home/Captin/home_captin.dart';
|
|||||||
import 'package:ride/views/home/map_page.dart';
|
import 'package:ride/views/home/map_page.dart';
|
||||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
|
||||||
import '../home/captin/home_captain_controller.dart';
|
// import '../home/captin/home_captain_controller.dart';
|
||||||
|
|
||||||
class RateController extends GetxController {
|
class RateController extends GetxController {
|
||||||
double selectedRateItemId = -1;
|
double selectedRateItemId = -1;
|
||||||
@@ -33,8 +33,8 @@ class RateController extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void addRateToPassenger() async {
|
void addRateToPassenger() async {
|
||||||
HomeCaptainController homeCaptainController =
|
// HomeCaptainController homeCaptainController =
|
||||||
Get.find<HomeCaptainController>();
|
// Get.find<HomeCaptainController>();
|
||||||
if (selectedRateItemId < 1) {
|
if (selectedRateItemId < 1) {
|
||||||
Get.defaultDialog(
|
Get.defaultDialog(
|
||||||
title: 'You Should choose rate figure'.tr,
|
title: 'You Should choose rate figure'.tr,
|
||||||
@@ -49,9 +49,10 @@ class RateController extends GetxController {
|
|||||||
'rating': selectedRateItemId.toString(),
|
'rating': selectedRateItemId.toString(),
|
||||||
'comment': comment.text,
|
'comment': comment.text,
|
||||||
});
|
});
|
||||||
Get.offAll(const HomeCaptain());
|
// homeCaptainController.isActive = true;
|
||||||
homeCaptainController.isActive = true;
|
// update();
|
||||||
homeCaptainController.getPaymentToday();
|
// homeCaptainController.getPaymentToday();
|
||||||
|
Get.offAll(HomeCaptain());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,12 @@ class DbSql {
|
|||||||
driver_id TEXT
|
driver_id TEXT
|
||||||
)
|
)
|
||||||
''');
|
''');
|
||||||
|
await db.execute('''
|
||||||
|
CREATE TABLE IF NOT EXISTS ${TableName.faceDetectTimes}(
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
faceDetectTimes INTEGER
|
||||||
|
)
|
||||||
|
''');
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
257
lib/views/auth/captin/ai_page.dart
Normal file
257
lib/views/auth/captin/ai_page.dart
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
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 * .35,
|
||||||
|
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.responseMap['data']['ocr']['name'].toString()}',
|
||||||
|
style: AppStyle.subtitle,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment
|
||||||
|
.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Drivers License Class: ${scanDocumentsByApi.responseMap['data']['ocr']['dlClass'].toString()}',
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
Image.memory(
|
||||||
|
scanDocumentsByApi
|
||||||
|
.imageSignature,
|
||||||
|
width: 100,
|
||||||
|
height: 30,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment
|
||||||
|
.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Document Number: ${scanDocumentsByApi.responseMap['data']['ocr']['documentNumber'].toString()}',
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
Image.memory(
|
||||||
|
scanDocumentsByApi
|
||||||
|
.imagePortrait,
|
||||||
|
width: 60,
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
Text(
|
||||||
|
'Address: ${scanDocumentsByApi.responseMap['data']['ocr']['address'].toString()}',
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment
|
||||||
|
.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Height: ${scanDocumentsByApi.responseMap['data']['ocr']['height'].toString()}',
|
||||||
|
style: AppStyle.subtitle,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Postal Code: ${scanDocumentsByApi.responseMap['data']['ocr']['addressPostalCode'].toString()}',
|
||||||
|
style: AppStyle.subtitle,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Sex: ${scanDocumentsByApi.responseMap['data']['ocr']['sex'].toString()}',
|
||||||
|
style: AppStyle.subtitle,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Jurisdiction Code: ${scanDocumentsByApi.responseMap['data']['ocr']['addressJurisdictionCode'].toString()}',
|
||||||
|
style: AppStyle.subtitle,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment
|
||||||
|
.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Expiry Date: ${scanDocumentsByApi.responseMap['data']['ocr']['dateOfExpiry'].toString()}',
|
||||||
|
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.responseMap['data']['ocr']['dateOfBirth'].toString()}',
|
||||||
|
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: 'title',
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
30
lib/views/auth/captin/car_license_page.dart
Normal file
30
lib/views/auth/captin/car_license_page.dart
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:ride/views/widgets/my_scafold.dart';
|
||||||
|
|
||||||
|
import '../../../controller/functions/ocr_controller.dart';
|
||||||
|
import '../../widgets/elevated_btn.dart';
|
||||||
|
|
||||||
|
class CarLicensePage extends StatelessWidget {
|
||||||
|
CarLicensePage({super.key});
|
||||||
|
ScanDocumentsByApi scanDocumentsByApi = Get.put(ScanDocumentsByApi());
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return MyScafolld(
|
||||||
|
title: 'Car License Card'.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();
|
||||||
|
},
|
||||||
|
)),
|
||||||
|
],
|
||||||
|
isleading: true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -171,7 +171,7 @@ class LoginCaptin extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
Text(
|
Text(
|
||||||
'if you dont have account'.tr,
|
'if you don\'t have account'.tr,
|
||||||
style: AppStyle.subtitle,
|
style: AppStyle.subtitle,
|
||||||
),
|
),
|
||||||
AnimatedTextKit(
|
AnimatedTextKit(
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import 'package:ride/views/widgets/my_scafold.dart';
|
|||||||
import 'package:ride/views/widgets/mycircular.dart';
|
import 'package:ride/views/widgets/mycircular.dart';
|
||||||
|
|
||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
|
import 'ai_page.dart';
|
||||||
|
|
||||||
class RegisterCaptin extends StatelessWidget {
|
class RegisterCaptin extends StatelessWidget {
|
||||||
const RegisterCaptin({super.key});
|
const RegisterCaptin({super.key});
|
||||||
@@ -272,10 +273,13 @@ class RegisterCaptin extends StatelessWidget {
|
|||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
MyElevatedButton(
|
||||||
|
title: 'Next'.tr,
|
||||||
|
onPressed: () => Get.to(() => AiPage())),
|
||||||
controller.isloading
|
controller.isloading
|
||||||
? const MyCircularProgressIndicator()
|
? const MyCircularProgressIndicator()
|
||||||
: MyElevatedButton(
|
: MyElevatedButton(
|
||||||
title: 'Register Captin'.tr,
|
title: 'Register Captain'.tr,
|
||||||
onPressed: () => controller.register())
|
onPressed: () => controller.register())
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ class VerifyEmailPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
title: 'Send Verfication Code'.tr,
|
title: 'Send Verfication Code'.tr,
|
||||||
onPressed: () => controller.sendverfications())
|
onPressed: () => controller.sendVerifications())
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
import 'package:chat_gpt_flutter/chat_gpt_flutter.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:ride/constant/colors.dart';
|
import 'package:ride/constant/colors.dart';
|
||||||
|
import 'package:ride/constant/credential.dart';
|
||||||
|
|
||||||
class BottomBarController extends GetxController {
|
class BottomBarController extends GetxController {
|
||||||
var currentIndex = 0.obs;
|
var currentIndex = 0.obs;
|
||||||
@@ -23,11 +25,11 @@ class HomeScreen extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
body: Obx(() => IndexedStack(
|
body: Obx(() => IndexedStack(
|
||||||
index: controller.currentIndex.value,
|
index: controller.currentIndex.value,
|
||||||
children: const [
|
children: [
|
||||||
HomeView(),
|
HomeView(chatGpt: ChatGpt(apiKey: AppCredintials.chatGPTkey)),
|
||||||
ProfileView(),
|
const ProfileView(),
|
||||||
StatisticsView(),
|
const StatisticsView(),
|
||||||
WalletView(),
|
const WalletView(),
|
||||||
],
|
],
|
||||||
)),
|
)),
|
||||||
bottomNavigationBar: Obx(() => BottomNavigationBar(
|
bottomNavigationBar: Obx(() => BottomNavigationBar(
|
||||||
@@ -70,12 +72,17 @@ class HomeScreen extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class HomeView extends StatelessWidget {
|
class HomeView extends StatelessWidget {
|
||||||
const HomeView({super.key});
|
const HomeView({super.key, required this.chatGpt});
|
||||||
|
final ChatGpt chatGpt;
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return const Center(
|
Map<String, dynamic> data;
|
||||||
child: Text('Home View'),
|
return Center(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Text('Home View'),
|
||||||
|
],
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -169,9 +169,7 @@ class CameraWidgetCardId extends StatelessWidget {
|
|||||||
onPressed: () =>
|
onPressed: () =>
|
||||||
cameraClassController.takePictureAndMLGoogleScan()),
|
cameraClassController.takePictureAndMLGoogleScan()),
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
title: 'Scan ID Tesseract'.tr,
|
title: 'Scan ID Tesseract'.tr, onPressed: () {}),
|
||||||
onPressed: () =>
|
|
||||||
cameraClassController.takePictureAndTesseractScan()),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
@@ -289,9 +287,7 @@ class CameraWidgetPassPort extends StatelessWidget {
|
|||||||
onPressed: () =>
|
onPressed: () =>
|
||||||
cameraClassController.takePictureAndMLGoogleScan()),
|
cameraClassController.takePictureAndMLGoogleScan()),
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
title: 'Scan ID Tesseract'.tr,
|
title: 'Scan ID Tesseract'.tr, onPressed: () {}),
|
||||||
onPressed: () =>
|
|
||||||
cameraClassController.takePictureAndTesseractScan()),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import 'package:camera/camera.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||||
import 'package:ride/constant/colors.dart';
|
import 'package:ride/constant/colors.dart';
|
||||||
import 'package:ride/constant/info.dart';
|
import 'package:ride/constant/info.dart';
|
||||||
import 'package:ride/constant/style.dart';
|
import 'package:ride/constant/style.dart';
|
||||||
import 'package:ride/constant/table_names.dart';
|
import 'package:ride/constant/table_names.dart';
|
||||||
import 'package:ride/controller/functions/camer_controller.dart';
|
|
||||||
import 'package:ride/controller/home/captin/home_captain_controller.dart';
|
import 'package:ride/controller/home/captin/home_captain_controller.dart';
|
||||||
import 'package:ride/controller/home/captin/order_request_controller.dart';
|
import 'package:ride/controller/home/captin/order_request_controller.dart';
|
||||||
|
import 'package:ride/controller/home/captin/widget/left_menu_map_captain.dart';
|
||||||
import 'package:ride/controller/payment/payment_controller.dart';
|
import 'package:ride/controller/payment/payment_controller.dart';
|
||||||
import 'package:ride/main.dart';
|
import 'package:ride/main.dart';
|
||||||
import 'package:ride/views/Rate/ride_calculate_driver.dart';
|
import 'package:ride/views/Rate/ride_calculate_driver.dart';
|
||||||
@@ -19,21 +19,24 @@ import 'package:ride/views/widgets/elevated_btn.dart';
|
|||||||
import 'package:flutter_font_icons/flutter_font_icons.dart';
|
import 'package:flutter_font_icons/flutter_font_icons.dart';
|
||||||
|
|
||||||
import '../../../controller/functions/location_controller.dart';
|
import '../../../controller/functions/location_controller.dart';
|
||||||
import '../../../controller/functions/ocr_controller.dart';
|
|
||||||
import '../../../controller/home/captin/widget/connect.dart';
|
import '../../../controller/home/captin/widget/connect.dart';
|
||||||
|
import '../../widgets/mycircular.dart';
|
||||||
import 'passportimage.dart';
|
import 'passportimage.dart';
|
||||||
|
|
||||||
class HomeCaptain extends StatelessWidget {
|
class HomeCaptain extends StatelessWidget {
|
||||||
const HomeCaptain({super.key});
|
HomeCaptain({super.key});
|
||||||
|
final LocationController locationController = LocationController();
|
||||||
|
// final HomeCaptainController homeCaptainController = HomeCaptainController();
|
||||||
|
// final LocationController locationController=LocationController();
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Get.put(LocationController());
|
|
||||||
Get.put(OrderRequestController());
|
Get.put(OrderRequestController());
|
||||||
Get.put(HomeCaptainController());
|
Get.put(HomeCaptainController());
|
||||||
|
// Get.put(HomeCaptainController());
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
backgroundColor: AppColor.blueColor,
|
backgroundColor: AppColor.greenColor,
|
||||||
|
elevation: 0,
|
||||||
title: Text('Captain Home'.tr),
|
title: Text('Captain Home'.tr),
|
||||||
actions: [
|
actions: [
|
||||||
GetBuilder<LocationController>(
|
GetBuilder<LocationController>(
|
||||||
@@ -71,212 +74,208 @@ class HomeCaptain extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
body: Column(
|
body: Stack(
|
||||||
children: [
|
children: [
|
||||||
GetBuilder<LocationController>(
|
|
||||||
builder: (locationController) => Column(
|
|
||||||
children: [
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.all(8.0),
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'${locationController.myLocation}',
|
|
||||||
style: AppStyle.subtitle,
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'${DateTime.now()}',
|
|
||||||
style: AppStyle.subtitle,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
// TextButton(
|
|
||||||
// onPressed: () {
|
|
||||||
// MyClass().exampleUsage();
|
|
||||||
// },
|
|
||||||
// child: Text(
|
|
||||||
// "Text Button",
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
],
|
|
||||||
)),
|
|
||||||
const ConnectWidget(),
|
|
||||||
const SizedBox(
|
|
||||||
height: 10,
|
|
||||||
),
|
|
||||||
GetBuilder<HomeCaptainController>(
|
GetBuilder<HomeCaptainController>(
|
||||||
builder: (homeCaptainController) => Container(
|
builder: (controller) => GoogleMap(
|
||||||
decoration: AppStyle.boxDecoration,
|
onMapCreated: controller.onMapCreated,
|
||||||
width: Get.width * .8,
|
// cameraTargetBounds: CameraTargetBounds(controller.boundsdata),
|
||||||
height: 80,
|
minMaxZoomPreference: const MinMaxZoomPreference(6, 18),
|
||||||
child: Center(
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
const Icon(
|
|
||||||
Entypo.wallet,
|
|
||||||
color: AppColor.greenColor,
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
' You Earn today is '.tr +
|
|
||||||
homeCaptainController.totalMoneyToday,
|
|
||||||
style: AppStyle.title,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
const Icon(
|
|
||||||
Entypo.loop,
|
|
||||||
color: AppColor.yellowColor,
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
' You Have in ${AppInformation.appName} '.tr +
|
|
||||||
homeCaptainController.totalMoneyInSEFER,
|
|
||||||
style: AppStyle.title,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
))),
|
|
||||||
),
|
|
||||||
GetBuilder<HomeCaptainController>(
|
|
||||||
builder: (homeCaptainController) => Column(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Active Duration:'.tr +
|
|
||||||
' ${homeCaptainController.activeDuration.inSeconds} seconds',
|
|
||||||
style: const TextStyle(fontSize: 20),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'Total Duration:'.tr +
|
|
||||||
' ${homeCaptainController.totalDurationToday} ',
|
|
||||||
style: const TextStyle(fontSize: 20),
|
|
||||||
),
|
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
|
||||||
Get.to(() => const RideCalculateDriver());
|
|
||||||
},
|
|
||||||
child: const Text('Chart')),
|
|
||||||
const Wrap(
|
|
||||||
children: <Widget>[
|
|
||||||
Icon(AntDesign.facebook_square),
|
|
||||||
Icon(AntDesign.wallet),
|
|
||||||
Icon(Entypo.wallet),
|
|
||||||
Icon(
|
|
||||||
Entypo.google__with_circle,
|
|
||||||
color: AppColor.redColor,
|
|
||||||
),
|
|
||||||
Icon(EvilIcons.camera),
|
|
||||||
Icon(Feather.activity),
|
|
||||||
Icon(
|
|
||||||
FontAwesome.whatsapp,
|
|
||||||
color: AppColor.greenColor,
|
|
||||||
),
|
|
||||||
Icon(FontAwesome5.square),
|
|
||||||
Icon(FontAwesome5Solid.address_book),
|
|
||||||
Icon(FontAwesome5Brands.$500px),
|
|
||||||
Icon(Fontisto.google_play),
|
|
||||||
Icon(Foundation.hearing_aid),
|
|
||||||
Icon(Ionicons.logo_whatsapp),
|
|
||||||
Icon(MaterialCommunityIcons.home_city),
|
|
||||||
Icon(MaterialIcons.ac_unit),
|
|
||||||
Icon(Octicons.watch),
|
|
||||||
Icon(SimpleLineIcons.wrench),
|
|
||||||
Icon(WeatherIcons.wi_day_sleet),
|
|
||||||
Icon(Zocial.github),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
InkWell(
|
|
||||||
onTap: () async {
|
|
||||||
// TwilioSMS().sendSMS(
|
|
||||||
// recipientPhoneNumber: '+962 7 9858 3052',
|
|
||||||
// message: 'Hello, this is a test message.',
|
|
||||||
// );
|
|
||||||
},
|
|
||||||
child: const Icon(MaterialIcons.message)),
|
|
||||||
// TextButton(
|
|
||||||
// onPressed: () {
|
|
||||||
// Get.to(() => TextExtractionView());
|
|
||||||
// },
|
|
||||||
// child: const Text(
|
|
||||||
// "Text FlutterTesseractsOcr",
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
|
||||||
Get.to(() => PassportPage());
|
|
||||||
},
|
|
||||||
child: Text(
|
|
||||||
'Passport '.tr,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
|
||||||
Get.to(() => PassportDataExtractorWidget());
|
|
||||||
},
|
|
||||||
child: Text(
|
|
||||||
'Passport new'.tr,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
TextButton(
|
initialCameraPosition: CameraPosition(
|
||||||
onPressed: () {
|
target: locationController.myLocation,
|
||||||
Get.to(() => const TextRecognizerWidget());
|
zoom: 15,
|
||||||
},
|
),
|
||||||
child: const Text(
|
|
||||||
"Driver License ML",
|
mapType: controller.mapType ? MapType.satellite : MapType.normal,
|
||||||
),
|
myLocationButtonEnabled: true,
|
||||||
),
|
// liteModeEnabled: true, tiltGesturesEnabled: false,
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
// indoorViewEnabled: true,
|
||||||
Get.to(
|
trafficEnabled: controller.mapTrafficON,
|
||||||
() => CameraWidgetCardId(),
|
buildingsEnabled: true,
|
||||||
);
|
mapToolbarEnabled: true,
|
||||||
},
|
|
||||||
child: const Text(
|
myLocationEnabled: true,
|
||||||
"Text IdCamera",
|
// liteModeEnabled: true,
|
||||||
),
|
|
||||||
),
|
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
|
||||||
Get.to(
|
|
||||||
() => CameraWidgetPassPort(),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
child: const Text(
|
|
||||||
" CameraWidgetPassPort",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
|
||||||
Get.to(() => HomeScreen());
|
|
||||||
},
|
|
||||||
child: const Text(
|
|
||||||
"Home Screen",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
|
||||||
PaymentController().makePayment(
|
|
||||||
14,
|
|
||||||
'USD',
|
|
||||||
() => Get.snackbar('Yes you pay success', '',
|
|
||||||
backgroundColor: Colors.greenAccent));
|
|
||||||
},
|
|
||||||
child: const Text(
|
|
||||||
"Pay 18 dollar",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
// GetBuilder<LocationController>(
|
||||||
|
// builder: (locationController) => Column(
|
||||||
|
// children: [
|
||||||
|
// Padding(
|
||||||
|
// padding: const EdgeInsets.all(8.0),
|
||||||
|
// child: Row(
|
||||||
|
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
// children: [
|
||||||
|
// Text(
|
||||||
|
// '${locationController.myLocation}',
|
||||||
|
// style: AppStyle.subtitle,
|
||||||
|
// ),
|
||||||
|
// Text(
|
||||||
|
// '${DateTime.now()}',
|
||||||
|
// style: AppStyle.subtitle,
|
||||||
|
// )
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// // TextButton(
|
||||||
|
// // onPressed: () {
|
||||||
|
// // MyClass().exampleUsage();
|
||||||
|
// // },
|
||||||
|
// // child: Text(
|
||||||
|
// // "Text Button",
|
||||||
|
// // ),
|
||||||
|
// // ),
|
||||||
|
// ],
|
||||||
|
// )),
|
||||||
|
|
||||||
|
Positioned(
|
||||||
|
bottom: 10,
|
||||||
|
right: Get.width * .1,
|
||||||
|
left: Get.width * .1,
|
||||||
|
child: const ConnectWidget()),
|
||||||
|
|
||||||
|
Positioned(
|
||||||
|
top: 5,
|
||||||
|
right: Get.width * .17,
|
||||||
|
left: Get.width * .17,
|
||||||
|
child: GetBuilder<HomeCaptainController>(
|
||||||
|
builder: (homeCaptainController) => Container(
|
||||||
|
decoration: AppStyle.boxDecoration,
|
||||||
|
width: Get.width * .8,
|
||||||
|
height: 80,
|
||||||
|
child: Center(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
const Icon(
|
||||||
|
Entypo.wallet,
|
||||||
|
color: AppColor.greenColor,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
' You Earn today is '.tr +
|
||||||
|
homeCaptainController.totalMoneyToday,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
const Icon(
|
||||||
|
Entypo.loop,
|
||||||
|
color: AppColor.yellowColor,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
' You Have in ${AppInformation.appName} '.tr +
|
||||||
|
homeCaptainController.totalMoneyInSEFER,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
))),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Positioned(
|
||||||
|
bottom: 65,
|
||||||
|
right: Get.width * .1,
|
||||||
|
left: Get.width * .1,
|
||||||
|
child: GetBuilder<HomeCaptainController>(
|
||||||
|
builder: (homeCaptainController) => Container(
|
||||||
|
decoration: AppStyle.boxDecoration,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Active Duration:'.tr +
|
||||||
|
' ${homeCaptainController.stringActiveDuration} ',
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Total Connection Duration:'.tr +
|
||||||
|
' ${homeCaptainController.totalDurationToday} ',
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Positioned(
|
||||||
|
bottom: Get.height * .17,
|
||||||
|
right: Get.width * .01,
|
||||||
|
child: AnimatedContainer(
|
||||||
|
duration: const Duration(microseconds: 200),
|
||||||
|
width: Get.width * .12,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.secondaryColor,
|
||||||
|
border: Border.all(),
|
||||||
|
borderRadius: BorderRadius.circular(15)),
|
||||||
|
child: IconButton(
|
||||||
|
onPressed: () {
|
||||||
|
// Get.to(
|
||||||
|
// () => CameraWidgetCardId(),
|
||||||
|
// );
|
||||||
|
},
|
||||||
|
icon: const Icon(Fontisto.history),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// TextButton(
|
||||||
|
// onPressed: () {
|
||||||
|
// Get.to(
|
||||||
|
// () => CameraWidgetCardId(),
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// child: const Text(
|
||||||
|
// "Text IdCamera",
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// TextButton(
|
||||||
|
// onPressed: () {
|
||||||
|
// Get.to(
|
||||||
|
// () => CameraWidgetPassPort(),
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// child: const Text(
|
||||||
|
// " CameraWidgetPassPort",
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// TextButton(
|
||||||
|
// onPressed: () {
|
||||||
|
// Get.to(() => HomeScreen());
|
||||||
|
// },
|
||||||
|
// child: const Text(
|
||||||
|
// "Home Screen",
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
Get.to(() => const TextRecognizerAPI());
|
||||||
|
},
|
||||||
|
child: const Text(
|
||||||
|
"scan licnse",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// TextButton(
|
||||||
|
// onPressed: () {
|
||||||
|
// PaymentController().makePayment(
|
||||||
|
// 14,
|
||||||
|
// 'USD',
|
||||||
|
// () => Get.snackbar('Yes you pay success', '',
|
||||||
|
// backgroundColor: Colors.greenAccent));
|
||||||
|
// },
|
||||||
|
// child: const Text(
|
||||||
|
// "Pay 18 dollar",
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
|
||||||
|
leftMainMenuCaptainIcons(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,46 +1,46 @@
|
|||||||
import 'dart:io';
|
// import 'dart:io';
|
||||||
|
//
|
||||||
import 'package:flutter/material.dart';
|
// import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
// import 'package:get/get.dart';
|
||||||
import '../../../controller/functions/ocr_controller.dart';
|
// import '../../../controller/functions/ocr_controller.dart';
|
||||||
|
//
|
||||||
class PassportDataExtractorWidget extends StatelessWidget {
|
// class PassportDataExtractorWidget extends StatelessWidget {
|
||||||
final PassportDataExtractor passportDataExtractor =
|
// final PassportDataExtractor passportDataExtractor =
|
||||||
Get.put(PassportDataExtractor());
|
// Get.put(PassportDataExtractor());
|
||||||
final PassportDataController controller = Get.put(PassportDataController());
|
// final PassportDataController controller = Get.put(PassportDataController());
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
Widget build(BuildContext context) {
|
// Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
// return Scaffold(
|
||||||
appBar: AppBar(
|
// appBar: AppBar(
|
||||||
title: const Text('Passport Data Extractor'),
|
// title: const Text('Passport Data Extractor'),
|
||||||
),
|
// ),
|
||||||
body: Column(
|
// body: Column(
|
||||||
children: [
|
// children: [
|
||||||
ElevatedButton(
|
// ElevatedButton(
|
||||||
onPressed: controller.extractDataAndDrawBoundingBoxes,
|
// onPressed: controller.extractDataAndDrawBoundingBoxes,
|
||||||
child: const Text('Extract Data'),
|
// child: const Text('Extract Data'),
|
||||||
),
|
// ),
|
||||||
Expanded(
|
// Expanded(
|
||||||
child: Center(
|
// child: Center(
|
||||||
child: Stack(
|
// child: Stack(
|
||||||
children: [
|
// children: [
|
||||||
GetBuilder<PassportDataController>(
|
// GetBuilder<PassportDataController>(
|
||||||
builder: (controller) => CustomPaint(
|
// builder: (controller) => CustomPaint(
|
||||||
painter: BoundingBoxPainter(
|
// painter: BoundingBoxPainter(
|
||||||
controller.extractedTextWithCoordinates),
|
// controller.extractedTextWithCoordinates),
|
||||||
child: GetBuilder<PassportDataExtractor>(
|
// child: GetBuilder<PassportDataExtractor>(
|
||||||
builder: (controller) =>
|
// builder: (controller) =>
|
||||||
Image.file(File(passportDataExtractor.image!.path)),
|
// Image.file(File(passportDataExtractor.image!.path)),
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|||||||
@@ -6,82 +6,170 @@ import 'package:ride/views/widgets/mycircular.dart';
|
|||||||
|
|
||||||
import '../../../controller/functions/ocr_controller.dart';
|
import '../../../controller/functions/ocr_controller.dart';
|
||||||
|
|
||||||
class TextExtractionView extends StatelessWidget {
|
class TextRecognizerAPI extends StatelessWidget {
|
||||||
TextExtractionView({super.key});
|
const TextRecognizerAPI({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Get.put(TextExtractionController());
|
Get.put(ScanDocumentsByApi());
|
||||||
return Scaffold(
|
return GetBuilder<ScanDocumentsByApi>(
|
||||||
appBar: AppBar(
|
|
||||||
title: const Text('Text Extraction'),
|
|
||||||
),
|
|
||||||
body: GetBuilder<TextExtractionController>(builder: (controller) {
|
|
||||||
return Center(
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
ElevatedButton(
|
|
||||||
onPressed: () => controller.pickAndExtractText(),
|
|
||||||
child: const Text('Pick Image and Extract Text'),
|
|
||||||
),
|
|
||||||
const SizedBox(height: 20),
|
|
||||||
controller.isloading
|
|
||||||
? const MyCircularProgressIndicator()
|
|
||||||
: Text(controller.extractedText),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class TextRecognizerWidget extends StatelessWidget {
|
|
||||||
const TextRecognizerWidget({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
Get.put(TextMLGoogleRecognizerController());
|
|
||||||
return GetBuilder<TextMLGoogleRecognizerController>(
|
|
||||||
builder: (controller) => Scaffold(
|
builder: (controller) => Scaffold(
|
||||||
appBar: AppBar(),
|
appBar: AppBar(
|
||||||
body: Center(
|
title: Text('Api'),
|
||||||
child: Column(
|
actions: [
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
IconButton(
|
||||||
children: [
|
onPressed: () {
|
||||||
Text('${controller.decode['DRIVER_LICENSE'].toString()}'),
|
controller.matchFaceApi();
|
||||||
Text('DL: ${controller.decode['dl_number'].toString()}'),
|
},
|
||||||
Text(
|
icon: const Icon(Icons.face),
|
||||||
'Expiry Date: ${controller.decode['expiry_date'].toString()}'),
|
),
|
||||||
Text('Last Name: ${controller.decode['lastName'].toString()}'),
|
|
||||||
Text(
|
|
||||||
'First Name: ${controller.decode['firstName'].toString()}'),
|
|
||||||
Text('Address: ${controller.decode['address'].toString()}'),
|
|
||||||
Text('Date of Birth: ${controller.decode['dob'].toString()}'),
|
|
||||||
Text('RSTR: ${controller.decode['rstr'].toString()}'),
|
|
||||||
Text('Class: ${controller.decode['class'].toString()}'),
|
|
||||||
Text('End: ${controller.decode['end'].toString()}'),
|
|
||||||
Text('DD: ${controller.decode['dd'].toString()}'),
|
|
||||||
Text('Sex: ${controller.decode['sex'].toString()}'),
|
|
||||||
Text('Hair: ${controller.decode['hair'].toString()}'),
|
|
||||||
Text('Eyes: ${controller.decode['eyes'].toString()}'),
|
|
||||||
// and so on for other fields
|
|
||||||
],
|
],
|
||||||
))));
|
),
|
||||||
|
body: Center(
|
||||||
|
child: controller.isLoading
|
||||||
|
? const MyCircularProgressIndicator()
|
||||||
|
: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Image.memory(
|
||||||
|
controller.imagePortrait,
|
||||||
|
width: 60,
|
||||||
|
),
|
||||||
|
Image.memory(
|
||||||
|
controller.imageSignature,
|
||||||
|
width: 60,
|
||||||
|
),
|
||||||
|
Image.memory(
|
||||||
|
controller.imageDocumentFrontSide,
|
||||||
|
width: 250,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Text(controller.responseMap['authenticity_meta']
|
||||||
|
.toString()),
|
||||||
|
Text(
|
||||||
|
'countryName: ${controller.responseMap['data']['countryName'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Expiry Date: ${controller.responseMap['data']['ocr']['dateOfExpiry'].toString()}'),
|
||||||
|
// Add more Text widgets to display other record values
|
||||||
|
Text(
|
||||||
|
'Address: ${controller.responseMap['data']['ocr']['address'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'City: ${controller.responseMap['data']['ocr']['addressCity'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Jurisdiction Code: ${controller.responseMap['data']['ocr']['addressJurisdictionCode'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Postal Code: ${controller.responseMap['data']['ocr']['addressPostalCode'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Street: ${controller.responseMap['data']['ocr']['addressStreet'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Date of Birth: ${controller.responseMap['data']['ocr']['dateOfBirth'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Date of Issue: ${controller.responseMap['data']['ocr']['dateOfIssue'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Drivers License Class: ${controller.responseMap['data']['ocr']['dlClass'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Document Number: ${controller.responseMap['data']['ocr']['documentNumber'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Eye Color: ${controller.responseMap['data']['ocr']['eyesColor'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Given Names: ${controller.responseMap['data']['ocr']['givenNames'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Height: ${controller.responseMap['data']['ocr']['height'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Issuing State Code: ${controller.responseMap['data']['ocr']['issuingStateCode'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Name: ${controller.responseMap['data']['ocr']['name'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Sex: ${controller.responseMap['data']['ocr']['sex'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Surname: ${controller.responseMap['data']['ocr']['surname'].toString()}'),
|
||||||
|
Text(
|
||||||
|
'Valid State: ${controller.responseMap['data']['ocr']['validState'].toString()}'),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// class TextExtractionView extends StatelessWidget {
|
||||||
|
// TextExtractionView({super.key});
|
||||||
|
//
|
||||||
|
// @override
|
||||||
|
// Widget build(BuildContext context) {
|
||||||
|
// Get.put(TextExtractionController());
|
||||||
|
// return Scaffold(
|
||||||
|
// appBar: AppBar(
|
||||||
|
// title: const Text('Text Extraction'),
|
||||||
|
// ),
|
||||||
|
// body: GetBuilder<TextExtractionController>(builder: (controller) {
|
||||||
|
// return Center(
|
||||||
|
// child: Column(
|
||||||
|
// mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
// children: [
|
||||||
|
// ElevatedButton(
|
||||||
|
// onPressed: () {},
|
||||||
|
// child: const Text('Pick Image and Extract Text'),
|
||||||
|
// ),
|
||||||
|
// const SizedBox(height: 20),
|
||||||
|
// controller.isloading
|
||||||
|
// ? const MyCircularProgressIndicator()
|
||||||
|
// : Text(controller.extractedText),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// }),
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
class PassportPage extends StatelessWidget {
|
// class TextRecognizerWidget extends StatelessWidget {
|
||||||
PassportPage({super.key});
|
// const TextRecognizerWidget({super.key});
|
||||||
PassportRecognizerController passportRecognizerController =
|
//
|
||||||
Get.put(PassportRecognizerController());
|
// @override
|
||||||
@override
|
// Widget build(BuildContext context) {
|
||||||
Widget build(BuildContext context) {
|
// Get.put(TextMLGoogleRecognizerController());
|
||||||
return Scaffold(
|
// return GetBuilder<TextMLGoogleRecognizerController>(
|
||||||
appBar: AppBar(
|
// builder: (controller) => Scaffold(
|
||||||
title: const Text('Driver License'),
|
// appBar: AppBar(),
|
||||||
),
|
// body: Center(
|
||||||
body: const Center(child: Text('data')));
|
// child: Column(
|
||||||
}
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
}
|
// children: [
|
||||||
|
// Text('${controller.decode['DRIVER_LICENSE'].toString()}'),
|
||||||
|
// Text('DL: ${controller.decode['dl_number'].toString()}'),
|
||||||
|
// Text(
|
||||||
|
// 'Expiry Date: ${controller.decode['expiry_date'].toString()}'),
|
||||||
|
// Text('Last Name: ${controller.decode['lastName'].toString()}'),
|
||||||
|
// Text(
|
||||||
|
// 'First Name: ${controller.decode['firstName'].toString()}'),
|
||||||
|
// Text('Address: ${controller.decode['address'].toString()}'),
|
||||||
|
// Text('Date of Birth: ${controller.decode['dob'].toString()}'),
|
||||||
|
// Text('RSTR: ${controller.decode['rstr'].toString()}'),
|
||||||
|
// Text('Class: ${controller.decode['class'].toString()}'),
|
||||||
|
// Text('End: ${controller.decode['end'].toString()}'),
|
||||||
|
// Text('DD: ${controller.decode['dd'].toString()}'),
|
||||||
|
// Text('Sex: ${controller.decode['sex'].toString()}'),
|
||||||
|
// Text('Hair: ${controller.decode['hair'].toString()}'),
|
||||||
|
// Text('Eyes: ${controller.decode['eyes'].toString()}'),
|
||||||
|
// // and so on for other fields
|
||||||
|
// ],
|
||||||
|
// ))));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// class PassportPage extends StatelessWidget {
|
||||||
|
// PassportPage({super.key});
|
||||||
|
// PassportRecognizerController passportRecognizerController =
|
||||||
|
// Get.put(PassportRecognizerController());
|
||||||
|
// @override
|
||||||
|
// Widget build(BuildContext context) {
|
||||||
|
// return Scaffold(
|
||||||
|
// appBar: AppBar(
|
||||||
|
// title: const Text('Driver License'),
|
||||||
|
// ),
|
||||||
|
// body: const Center(child: Text('data')));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|||||||
136
pubspec.lock
136
pubspec.lock
@@ -1,6 +1,14 @@
|
|||||||
# Generated by pub
|
# Generated by pub
|
||||||
# See https://dart.dev/tools/pub/glossary#lockfile
|
# See https://dart.dev/tools/pub/glossary#lockfile
|
||||||
packages:
|
packages:
|
||||||
|
_fe_analyzer_shared:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: _fe_analyzer_shared
|
||||||
|
sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "64.0.0"
|
||||||
_flutterfire_internals:
|
_flutterfire_internals:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -9,6 +17,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.5"
|
version: "1.3.5"
|
||||||
|
analyzer:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: analyzer
|
||||||
|
sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.2.0"
|
||||||
animated_text_kit:
|
animated_text_kit:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -57,6 +73,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.1"
|
||||||
|
build:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: build
|
||||||
|
sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.4.1"
|
||||||
|
build_config:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: build_config
|
||||||
|
sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.1"
|
||||||
cached_network_image:
|
cached_network_image:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -129,6 +161,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.0"
|
||||||
|
chat_gpt_flutter:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: chat_gpt_flutter
|
||||||
|
sha256: "38d56435c16e9d8743fcdcc9d361a315e6c0e15b4eb91a8638cca235ffbb03bc"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.13"
|
||||||
checked_yaml:
|
checked_yaml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -217,6 +257,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.1"
|
||||||
|
dart_style:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: dart_style
|
||||||
|
sha256: abd7625e16f51f554ea244d090292945ec4d4be7bfbaf2ec8cccea568919d334
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.3"
|
||||||
dbus:
|
dbus:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -241,6 +289,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.0"
|
version: "7.0.0"
|
||||||
|
dio:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: dio
|
||||||
|
sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.0.6"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -502,14 +558,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.9"
|
version: "2.0.9"
|
||||||
flutter_tesseract_ocr:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: flutter_tesseract_ocr
|
|
||||||
sha256: "4a8d0e3f562ee01d94a464ff9d31d9e907b1e374aeff29bf696f979417c70bcf"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.4.24"
|
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
@@ -656,6 +704,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.1"
|
||||||
|
glob:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: glob
|
||||||
|
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.2"
|
||||||
google_fonts:
|
google_fonts:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -920,6 +976,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.8.1"
|
version: "4.8.1"
|
||||||
|
json_serializable:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: json_serializable
|
||||||
|
sha256: aa1f5a8912615733e0fdc7a02af03308933c93235bdc8d50d0b0c8a8ccb0b969
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.7.1"
|
||||||
just_audio:
|
just_audio:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1040,6 +1104,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "2.0.0"
|
||||||
|
package_config:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_config
|
||||||
|
sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.0"
|
||||||
package_info_plus:
|
package_info_plus:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1152,6 +1224,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.7.3"
|
version: "3.7.3"
|
||||||
|
pretty_dio_logger:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pretty_dio_logger
|
||||||
|
sha256: "948f7eeb36e7aa0760b51c1a8e3331d4b21e36fabd39efca81f585ed93893544"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.0-beta-1"
|
||||||
provider:
|
provider:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1160,6 +1240,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.0.5"
|
version: "6.0.5"
|
||||||
|
pub_semver:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pub_semver
|
||||||
|
sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.4"
|
||||||
|
pubspec_parse:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pubspec_parse
|
||||||
|
sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.3"
|
||||||
quiver:
|
quiver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1189,6 +1285,22 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.99"
|
version: "0.0.99"
|
||||||
|
source_gen:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: source_gen
|
||||||
|
sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.4.0"
|
||||||
|
source_helper:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: source_helper
|
||||||
|
sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.3.4"
|
||||||
source_span:
|
source_span:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1469,6 +1581,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
|
watcher:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: watcher
|
||||||
|
sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.0"
|
||||||
web:
|
web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -40,11 +40,11 @@ dependencies:
|
|||||||
flutter_font_icons: ^2.2.5
|
flutter_font_icons: ^2.2.5
|
||||||
device_info_plus: ^9.1.0
|
device_info_plus: ^9.1.0
|
||||||
image_picker: ^1.0.4
|
image_picker: ^1.0.4
|
||||||
flutter_tesseract_ocr: ^0.4.24
|
|
||||||
google_mlkit_text_recognition: # ^0.10.0
|
google_mlkit_text_recognition: # ^0.10.0
|
||||||
flutter_stripe: ^9.5.0+1
|
flutter_stripe: ^9.5.0+1
|
||||||
camera: ^0.10.5+5
|
camera: ^0.10.5+5
|
||||||
flutter_widget_from_html: ^0.14.6
|
flutter_widget_from_html: ^0.14.6
|
||||||
|
chat_gpt_flutter:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -80,7 +80,6 @@ flutter:
|
|||||||
- assets/images/
|
- assets/images/
|
||||||
- assets/lottie/
|
- assets/lottie/
|
||||||
- assets/fonts/
|
- assets/fonts/
|
||||||
- assets/tessdata/
|
|
||||||
- shorebird.yaml
|
- shorebird.yaml
|
||||||
|
|
||||||
fonts:
|
fonts:
|
||||||
|
|||||||
Reference in New Issue
Block a user