This commit is contained in:
Hamza-Ayed
2023-11-09 18:26:11 +03:00
parent 8238323dd3
commit ebde8bb44d
29 changed files with 1667 additions and 819 deletions

View File

@@ -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.

View File

@@ -1,7 +0,0 @@
{
"files": [
"eng.traineddata",
"ara.traineddata"
]
}

View File

@@ -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";

View File

@@ -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 {

View File

@@ -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------------------

View File

@@ -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";
} }

View File

@@ -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()

View File

@@ -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,

View File

@@ -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

View File

@@ -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();
} }

View 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),
),
),
],
)),
);
}

View File

@@ -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());
}); });
} }

View File

@@ -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());
} }
} }

View File

@@ -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
)
''');
}, },
); );
} }

View 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);
}
}

View 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);
}
}

View File

@@ -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(

View File

@@ -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())
]), ]),
), ),

View File

@@ -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())
], ],
), ),
), ),

View File

@@ -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'),
],
),
); );
} }
} }

View File

@@ -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(

View File

@@ -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,42 +74,74 @@ 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: (controller) => GoogleMap(
onMapCreated: controller.onMapCreated,
// cameraTargetBounds: CameraTargetBounds(controller.boundsdata),
minMaxZoomPreference: const MinMaxZoomPreference(6, 18),
initialCameraPosition: CameraPosition(
target: locationController.myLocation,
zoom: 15,
),
mapType: controller.mapType ? MapType.satellite : MapType.normal,
myLocationButtonEnabled: true,
// liteModeEnabled: true, tiltGesturesEnabled: false,
// indoorViewEnabled: true,
trafficEnabled: controller.mapTrafficON,
buildingsEnabled: true,
mapToolbarEnabled: true,
myLocationEnabled: true,
// liteModeEnabled: true,
),
),
// 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( builder: (homeCaptainController) => Container(
decoration: AppStyle.boxDecoration, decoration: AppStyle.boxDecoration,
width: Get.width * .8, width: Get.width * .8,
@@ -146,137 +181,101 @@ class HomeCaptain extends StatelessWidget {
], ],
))), ))),
), ),
GetBuilder<HomeCaptainController>( ),
builder: (homeCaptainController) => Column( Positioned(
bottom: 65,
right: Get.width * .1,
left: Get.width * .1,
child: GetBuilder<HomeCaptainController>(
builder: (homeCaptainController) => Container(
decoration: AppStyle.boxDecoration,
child: Column(
children: [ children: [
Text( Text(
'Active Duration:'.tr + 'Active Duration:'.tr +
' ${homeCaptainController.activeDuration.inSeconds} seconds', ' ${homeCaptainController.stringActiveDuration} ',
style: const TextStyle(fontSize: 20), style: AppStyle.title,
), ),
Text( Text(
'Total Duration:'.tr + 'Total Connection Duration:'.tr +
' ${homeCaptainController.totalDurationToday} ', ' ${homeCaptainController.totalDurationToday} ',
style: const TextStyle(fontSize: 20), style: AppStyle.title,
), ),
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', Positioned(
// message: 'Hello, this is a test message.', 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(),
// ); // );
}, },
child: const Icon(MaterialIcons.message)), icon: const Icon(Fontisto.history),
),
),
),
// TextButton( // TextButton(
// onPressed: () { // onPressed: () {
// Get.to(() => TextExtractionView()); // Get.to(
// () => CameraWidgetCardId(),
// );
// }, // },
// child: const Text( // child: const Text(
// "Text FlutterTesseractsOcr", // "Text IdCamera",
// ),
// ),
// TextButton(
// onPressed: () {
// Get.to(
// () => CameraWidgetPassPort(),
// );
// },
// child: const Text(
// " CameraWidgetPassPort",
// ),
// ),
// TextButton(
// onPressed: () {
// Get.to(() => HomeScreen());
// },
// child: const Text(
// "Home Screen",
// ), // ),
// ), // ),
TextButton( TextButton(
onPressed: () { onPressed: () {
Get.to(() => PassportPage()); Get.to(() => const TextRecognizerAPI());
}, },
child: Text( child: const Text(
'Passport '.tr, "scan licnse",
),
),
TextButton(
onPressed: () {
Get.to(() => PassportDataExtractorWidget());
},
child: Text(
'Passport new'.tr,
), ),
), ),
// TextButton(
// onPressed: () {
// PaymentController().makePayment(
// 14,
// 'USD',
// () => Get.snackbar('Yes you pay success', '',
// backgroundColor: Colors.greenAccent));
// },
// child: const Text(
// "Pay 18 dollar",
// ),
// ),
TextButton( leftMainMenuCaptainIcons(),
onPressed: () {
Get.to(() => const TextRecognizerWidget());
},
child: const Text(
"Driver License ML",
),
),
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: () {
PaymentController().makePayment(
14,
'USD',
() => Get.snackbar('Yes you pay success', '',
backgroundColor: Colors.greenAccent));
},
child: const Text(
"Pay 18 dollar",
),
),
],
),
),
], ],
), ),
); );

View File

@@ -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)),
), // ),
), // ),
), // ),
], // ],
), // ),
), // ),
), // ),
], // ],
), // ),
); // );
} // }
} // }

View File

@@ -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>(
builder: (controller) => Scaffold(
appBar: AppBar( appBar: AppBar(
title: const Text('Text Extraction'), title: Text('Api'),
actions: [
IconButton(
onPressed: () {
controller.matchFaceApi();
},
icon: const Icon(Icons.face),
), ),
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(
appBar: AppBar(),
body: Center( body: Center(
child: controller.isLoading
? const MyCircularProgressIndicator()
: SingleChildScrollView(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text('${controller.decode['DRIVER_LICENSE'].toString()}'), Row(
Text('DL: ${controller.decode['dl_number'].toString()}'), children: [
Text( Image.memory(
'Expiry Date: ${controller.decode['expiry_date'].toString()}'), controller.imagePortrait,
Text('Last Name: ${controller.decode['lastName'].toString()}'), width: 60,
Text( ),
'First Name: ${controller.decode['firstName'].toString()}'), Image.memory(
Text('Address: ${controller.decode['address'].toString()}'), controller.imageSignature,
Text('Date of Birth: ${controller.decode['dob'].toString()}'), width: 60,
Text('RSTR: ${controller.decode['rstr'].toString()}'), ),
Text('Class: ${controller.decode['class'].toString()}'), Image.memory(
Text('End: ${controller.decode['end'].toString()}'), controller.imageDocumentFrontSide,
Text('DD: ${controller.decode['dd'].toString()}'), width: 250,
Text('Sex: ${controller.decode['sex'].toString()}'), ),
Text('Hair: ${controller.decode['hair'].toString()}'),
Text('Eyes: ${controller.decode['eyes'].toString()}'),
// and so on for other fields
], ],
),
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')));
// }
// }

View File

@@ -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:

View File

@@ -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: