diff --git a/android/app/build.gradle b/android/app/build.gradle
index db05599..c43e87e 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -55,8 +55,8 @@ android {
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 23
targetSdkVersion 33
- versionCode 43
- versionName '1.5.43'
+ versionCode 44
+ versionName '1.5.44'
// manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml']
}
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 780b27e..89286d3 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -21,7 +21,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 40
+ 41
CFBundleSignature
????
CFBundleURLTypes
@@ -36,7 +36,7 @@
CFBundleVersion
- 4.0.40
+ 4.0.41
FirebaseAppDelegateProxyEnabled
NO
GMSApiKey
diff --git a/lib/controller/auth/captin/login_captin_controller.dart b/lib/controller/auth/captin/login_captin_controller.dart
index 91e4488..8e8d17c 100644
--- a/lib/controller/auth/captin/login_captin_controller.dart
+++ b/lib/controller/auth/captin/login_captin_controller.dart
@@ -17,6 +17,7 @@ import 'package:SEFER/views/auth/captin/verify_email_captain.dart';
import 'package:SEFER/views/home/Captin/home_captain/home_captin.dart';
import 'package:location/location.dart';
+import '../../../views/auth/captin/cards/egypt_card_a_i.dart';
import '../../firebase/firbase_messge.dart';
class LoginDriverController extends GetxController {
@@ -58,7 +59,12 @@ class LoginDriverController extends GetxController {
});
if (res == 'Failure') {
//Failure
- Get.offAll(() => SmsSignupEgypt());
+ if (box.read(BoxName.phoneVerified) == '1') {
+ Get.offAll(() => EgyptCardAI());
+ } else {
+ Get.offAll(() => SmsSignupEgypt());
+ }
+
isloading = false;
update();
// Get.snackbar('Failure', '', backgroundColor: Colors.red);
diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart
index d31ea1a..e9a7327 100644
--- a/lib/controller/functions/crud.dart
+++ b/lib/controller/functions/crud.dart
@@ -223,7 +223,7 @@ class CRUD {
);
print(response.request);
print(response.body);
- print(response.statusCode);
+ // print(response.statusCode);
var jsonData = jsonDecode(response.body);
if (response.statusCode == 200) {
if (jsonData['status'] == 'success') {
diff --git a/lib/controller/functions/gemeni.dart b/lib/controller/functions/gemeni.dart
index 0e66334..247201c 100644
--- a/lib/controller/functions/gemeni.dart
+++ b/lib/controller/functions/gemeni.dart
@@ -511,7 +511,7 @@ class AI extends GetxController {
},
body: requestBody,
);
-
+ print(response.body);
if (response.statusCode == 200) {
var responseData = jsonDecode(utf8.decode(response.bodyBytes));
// Process the responseData as needed
diff --git a/lib/controller/home/payment/captain_wallet_controller.dart b/lib/controller/home/payment/captain_wallet_controller.dart
index 89b286d..88a3223 100644
--- a/lib/controller/home/payment/captain_wallet_controller.dart
+++ b/lib/controller/home/payment/captain_wallet_controller.dart
@@ -113,7 +113,7 @@ class CaptainWalletController extends GetxController {
if (res != 'failure') {
walletDate = jsonDecode(res);
totalAmount = walletDate['message'][0]['total_amount'] ?? '0';
-
+ update();
var res1 = await CRUD().get(
link: AppLink.getAllPaymentVisa,
payload: {'driverID': box.read(BoxName.driverID)});
@@ -269,9 +269,7 @@ class CaptainWalletController extends GetxController {
await Get.find().getKazanPercent();
kazan = Get.find().kazan;
- getCaptainWalletFromRide();
- getCaptainWalletFromBuyPoints();
- // checkAccountCaptainBank();
+ await refreshCaptainWallet();
super.onInit();
}
}
diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart
index 4949cce..3592dbb 100644
--- a/lib/controller/local/translations.dart
+++ b/lib/controller/local/translations.dart
@@ -4,6 +4,14 @@ class MyTranslation extends Translations {
@override
Map> get keys => {
"ar": {
+ "Morning Promo": "عرض الصباح",
+ "this is count of your all trips in the morning promo today from 7:00am-10:00am":
+ "هذا عدد جميع رحلاتك في عرض الصباح اليوم من الساعة 7:00 صباحًا حتى 10:00 صباحًا",
+ "Morning Promo Rides": "رحلات عرض الصباح",
+ "Afternoon Promo": "عرض بعد الظهر",
+ "this is count of your all trips in the Afternoon promo today from 3:00pm-6:00 pm":
+ "هذا عدد جميع رحلاتك في عرض بعد الظهر اليوم من الساعة 3:00 مساءً حتى 6:00 مساءً",
+ "Afternoon Promo Rides": "رحلات عرض بعد الظهر",
"Heading your way now. Please be ready.":
"في طريقي إليك الآن. يرجى الاستعداد.",
"Approaching your area. Should be there in 3 minutes.":
diff --git a/lib/views/auth/captin/cards/egypt_card_a_i.dart b/lib/views/auth/captin/cards/egypt_card_a_i.dart
index 5e6c090..2a33cfd 100644
--- a/lib/views/auth/captin/cards/egypt_card_a_i.dart
+++ b/lib/views/auth/captin/cards/egypt_card_a_i.dart
@@ -222,10 +222,29 @@ class EgyptCardAI extends StatelessWidget {
Text('Driver\'s License'.tr, style: AppStyle.headTitle2),
IconButton(
onPressed: () async {
- await ai.allMethodForAI(
- '''Write a JSON object from the following information extracted from the provided Arabic text:license_type,national_number,name_arabic,name_english,firstName,lastName,address,issue_date,expiry_date,employmentType,license_categories.and (date formate year-month-day in latin numbers) ''',
- AppLink.uploadEgypt,
- 'driver_license'); //egypt
+ await ai.allMethodForAI("""
+Write a JSON object from the following information extracted from the provided Arabic text:
+
+{
+ "license_type": "",
+ "national_number": "",
+ "name_arabic": "",
+ "name_english": "",
+ "firstName": "",
+ "lastName": "",
+ "address": "",
+ "issue_date": "", // Format: YYYY-MM-DD using Latin numerals (0-9)
+ "expiry_date": "", // Format: YYYY-MM-DD using Latin numerals (0-9)
+ "employmentType": "",
+ "license_categories": []
+}
+
+Important notes:
+1. Ensure all dates are in the format YYYY-MM-DD using Latin (Western) numerals (0-9), not Arabic numerals.
+2. The 'license_categories' should be an array, even if there's only one category.
+3. Fill in all fields based on the information provided in the Arabic text.
+4. If any information is missing, leave the field as an empty string or empty array as appropriate.
+""", AppLink.uploadEgypt, 'driver_license'); //egypt
},
icon: const Icon(Icons.refresh),
),
@@ -284,10 +303,29 @@ class EgyptCardAI extends StatelessWidget {
return Card(
child: InkWell(
onTap: () async {
- await ai.allMethodForAI(
- '''Write a JSON object from the following information extracted from the provided Arabic text:license_type,national_number,name_arabic,name_english,firstName,lastName,address,issue_date,expiry_date,employmentType,license_categories.and (date formate year-month-day in latin numbers) ''',
- AppLink.uploadEgypt,
- 'driver_license'); //egypt
+ await ai.allMethodForAI("""
+Write a JSON object from the following information extracted from the provided Arabic text:
+
+{
+ "license_type": "",
+ "national_number": "",
+ "name_arabic": "",
+ "name_english": "",
+ "firstName": "",
+ "lastName": "",
+ "address": "",
+ "issue_date": "", // Format: YYYY-MM-DD using Latin numerals (0-9)
+ "expiry_date": "", // Format: YYYY-MM-DD using Latin numerals (0-9)
+ "employmentType": "",
+ "license_categories": []
+}
+
+Important notes:
+1. Ensure all dates are in the format YYYY-MM-DD using Latin (Western) numerals (0-9), not Arabic numerals.
+2. The 'license_categories' should be an array, even if there's only one category.
+3. Fill in all fields based on the information provided in the Arabic text.
+4. If any information is missing, leave the field as an empty string or empty array as appropriate.
+""", AppLink.uploadEgypt, 'driver_license'); //egypt
},
child: Column(
children: [
@@ -339,10 +377,19 @@ class EgyptCardAI extends StatelessWidget {
Text('ID Documents Back'.tr, style: AppStyle.headTitle2),
IconButton(
onPressed: () async {
- await ai.allMethodForAI(
- '''Write a JSON from the following information extracted from the provided Arabic text:nationalID,issueDate,occupation,gender,religion,maritalStatus,fullNameMaritial if(أعزب)=none ,expirationDate.and (date formate year-month-day in latin numbers) ''',
- AppLink.uploadEgypt,
- 'id_back'); //egypt
+ await ai.allMethodForAI("""
+ Write a JSON from the following information extracted from the provided Arabic text:
+- nationalID(in Latin numerals)
+- issueDate (in format YYYY-MM-DD using Latin numerals)
+- occupation
+- gender
+- religion
+- maritalStatus
+- fullNameMarital (if maritalStatus is "أعزب", set this to "none")
+- expirationDate (in format YYYY-MM-DD using Latin numerals)
+
+Please ensure all date fields use Latin (Western) numerals (0-9) instead of Arabic numerals. For example, use "2023-04-03" instead of "٢٠٢٣-٠٤-٠٣".
+ """, AppLink.uploadEgypt, 'id_back'); //egypt
},
icon: const Icon(Icons.refresh),
),
@@ -410,10 +457,26 @@ class EgyptCardAI extends StatelessWidget {
return Card(
child: InkWell(
onTap: () async {
- await ai.allMethodForAI(
- '''Write a JSON from the following information extracted from the provided Arabic text:nationalID,issueDate,occupation,gender,religion,maritalStatus,fullNameMaritial if(أعزب)=none ,expirationDate.and (date formate year-month-day in latin numbers) ''',
- AppLink.uploadEgypt,
- 'id_back'); //egypt
+ await ai.allMethodForAI('''
+ Write a JSON object from the following information extracted from the provided Arabic text:
+
+{
+ "nationalID": "",//(in Latin numerals)
+ "issueDate": "", // Format: YYYY-MM-DD using Latin numerals (0-9)
+ "occupation": "",
+ "gender": "",
+ "religion": "",
+ "maritalStatus": "",
+ "fullNameMaritial": "", // Set to "none" if maritalStatus is "أعزب"
+ "expirationDate": "" // Format: YYYY-MM-DD using Latin numerals (0-9)
+}
+
+Important notes:
+1. Ensure all dates (issueDate and expirationDate) are in the format YYYY-MM-DD using Latin (Western) numerals (0-9), not Arabic numerals.
+2. If maritalStatus is "أعزب" (single), set fullNameMaritial to "none".
+3. Fill in all fields based on the information provided in the Arabic text.
+4. If any information is missing, leave the field as an empty string.
+ ''', AppLink.uploadEgypt, 'id_back'); //egypt
},
child: Column(
children: [
@@ -455,10 +518,27 @@ class EgyptCardAI extends StatelessWidget {
Text('ID Documents Front'.tr, style: AppStyle.headTitle2),
IconButton(
onPressed: () async {
- await ai.allMethodForAI(
- '''Write a JSON object from the following information extracted from the provided Arabic text:first_name: The word next to "بطاقة تحقيق الشخصية" (National Identification Card).full_name: The full name on the next line after the first name.address: The complete address spanning the next two lines.national_number: The Arabic numeral representing the National ID number before the last line.card_id: The card ID in English on the last line and dob for date in year note month just year of born in latin char ''',
- AppLink.uploadEgypt,
- 'id_front'); //egypt
+ await ai.allMethodForAI('''
+ Write a JSON object from the following information extracted from the provided Arabic text:
+
+{
+ "first_name": "", // The word next to "بطاقة تحقيق الشخصية" (National Identification Card)
+ "full_name": "", // The full name on the next line after the first name
+ "address": "", // The complete address spanning the next two lines
+ "national_number": "", // The National ID number before the last line (convert Arabic numerals to Latin)
+ "card_id": "", // The card ID in English on the last line
+ "dob": "" // Year of birth only, in Latin numerals (YYYY format)
+}
+
+Important notes:
+1. For 'first_name', extract the word immediately following "بطاقة تحقيق الشخصية".
+2. 'full_name' should be the complete name found on the line after the first name.
+3. 'address' should combine information from two consecutive lines.
+4. Convert the 'national_number' from Arabic numerals to Latin numerals (0-9).
+5. 'card_id' should be extracted as-is from the last line (it's already in English).
+6. For 'dob', include only the year of birth in YYYY format using Latin numerals.
+7. If any information is missing, leave the field as an empty string.
+ ''', AppLink.uploadEgypt, 'id_front'); //egypt
},
icon: const Icon(Icons.refresh),
),
@@ -511,10 +591,27 @@ class EgyptCardAI extends StatelessWidget {
return Card(
child: InkWell(
onTap: () async {
- await ai.allMethodForAI(
- '''Write a JSON object from the following information extracted from the provided Arabic text:first_name: The word next to "بطاقة تحقيق الشخصية" (National Identification Card).full_name: The full name on the next line after the first name.address: The complete address spanning the next two lines.national_number: The Arabic numeral representing the National ID number before the last line.card_id: The card ID in English on the last line and dob for date in year note month just year of born in latin char ''',
- AppLink.uploadEgypt,
- 'id_front'); //egypt
+ await ai.allMethodForAI(""""
+ Write a JSON object from the following information extracted from the provided Arabic text:
+
+{
+ "first_name": "", // The word next to "بطاقة تحقيق الشخصية" (National Identification Card)
+ "full_name": "", // The full name on the next line after the first name
+ "address": "", // The complete address spanning the next two lines
+ "national_number": "", // The National ID number before the last line (convert Arabic numerals to Latin)
+ "card_id": "", // The card ID in English on the last line
+ "dob": "" // Year of birth only, in Latin numerals (YYYY format)
+}
+
+Important notes:
+1. For 'first_name', extract the word immediately following "بطاقة تحقيق الشخصية".
+2. 'full_name' should be the complete name found on the line after the first name.
+3. 'address' should combine information from two consecutive lines.
+4. Convert the 'national_number' from Arabic numerals to Latin numerals (0-9).
+5. 'card_id' should be extracted as-is from the last line (it's already in English).
+6. For 'dob', include only the year of birth in YYYY format using Latin numerals.
+7. If any information is missing, leave the field as an empty string.
+ """, AppLink.uploadEgypt, 'id_front'); //egypt
},
child: Column(
children: [
@@ -564,10 +661,24 @@ class EgyptCardAI extends StatelessWidget {
style: AppStyle.headTitle2),
IconButton(
onPressed: () async {
- ai.allMethodForAI(
- 'extract all fields as json for keys[LicenseExpirationDate,car_plate,owner,address] replace | by space,and date formate year-month-day',
- AppLink.uploadEgypt,
- 'car_front');
+ ai.allMethodForAI("""
+ Extract the following fields from the provided text and create a JSON object with these keys:
+
+{
+ "LicenseExpirationDate": "", // Format: YYYY-MM-DD
+ "car_plate": "",
+ "owner": "",
+ "address": ""
+}
+
+Important notes:
+1. For the LicenseExpirationDate, ensure the date is in YYYY-MM-DD format using Latin numerals (0-9).
+2. Replace all occurrences of '|' (pipe character) with a space in all fields.
+3. If any information is missing, leave the corresponding field as an empty string.
+4. Ensure all text is properly formatted and spaces are used correctly.
+
+Please fill in the JSON object with the extracted information, following these guidelines.
+""", AppLink.uploadEgypt, 'car_front');
},
icon: const Icon(Icons.refresh),
),
@@ -611,10 +722,24 @@ class EgyptCardAI extends StatelessWidget {
return Card(
child: InkWell(
onTap: () async {
- ai.allMethodForAI(
- 'extract all fields as json for keys[LicenseExpirationDate,car_plate,owner,address] replace | by space,and date formate year-month-day',
- AppLink.uploadEgypt,
- 'car_front');
+ ai.allMethodForAI("""
+ Extract the following fields from the provided text and create a JSON object with these keys:
+
+{
+ "LicenseExpirationDate": "", // Format: YYYY-MM-DD
+ "car_plate": "",
+ "owner": "",
+ "address": ""
+}
+
+Important notes:
+1. For the LicenseExpirationDate, ensure the date is in YYYY-MM-DD format using Latin numerals (0-9).
+2. Replace all occurrences of '|' (pipe character) with a space in all fields.
+3. If any information is missing, leave the corresponding field as an empty string.
+4. Ensure all text is properly formatted and spaces are used correctly.
+
+Please fill in the JSON object with the extracted information, following these guidelines.
+""", AppLink.uploadEgypt, 'car_front');
},
child: Column(
children: [
@@ -646,7 +771,8 @@ class EgyptCardAI extends StatelessWidget {
// Get the inspection date from the response
final inspectionDate =
ai.responseIdCardDriverEgyptBack['inspection_date'];
-
+ final year = int.parse(inspectionDate.split('-')[0]);
+ final inspectionDateTime = DateTime(year, 1, 1);
// Check if the tax expiry date is before today
final today = DateTime.now();
@@ -656,8 +782,8 @@ class EgyptCardAI extends StatelessWidget {
taxExpiryDateTime != null && taxExpiryDateTime.isBefore(today);
// Check if the inspection date is before today
- final inspectionDateTime =
- DateTime(int.parse(inspectionDate ?? ''), 1, 1);
+ // final inspectionDateTime =
+ // DateTime(int.parse(year ?? ''), 1, 1);
final isInspectionExpired = inspectionDateTime.isBefore(today);
return Card(
@@ -677,10 +803,34 @@ class EgyptCardAI extends StatelessWidget {
style: AppStyle.headTitle2),
IconButton(
onPressed: () async {
- ai.allMethodForAI(
- 'for this this extracted car license analyze it to get Json just without any text for keys[make, year, chassis, model, engine, displacement, cylinders, fuel, color,and color_hex (for color) inspection_date,assurnceNumber, tax_expiry,make date format year-month-day get hex color form color name provided',
- AppLink.uploadEgypt,
- 'car_back');
+ ai.allMethodForAI("""
+Analyze the extracted car license information and create a JSON object with the following keys:
+
+{
+ "make": "",
+ "year": "",
+ "chassis": "",
+ "model": "",
+ "engine": "",
+ "displacement": "",
+ "cylinders": "",
+ "fuel": "",
+ "color": "",
+ "color_hex": "",
+ "inspection_date": "",
+ "assuranceNumber": "",
+ "tax_expiry": ""
+}
+
+Important notes:
+1. For dates (inspection_date and tax_expiry), use the format YYYY-MM-DD with Latin numerals (0-9).
+2. Convert the color name to its corresponding hex color code for the 'color_hex' field.
+3. Ensure all numeric values (year, displacement, cylinders) are in Latin numerals.
+4. If any information is missing, leave the corresponding field as an empty string.
+5. Do not include any explanatory text in the JSON fields, only the extracted values.
+
+Please fill in the JSON object with the extracted information, following these guidelines.
+""", AppLink.uploadEgypt, 'car_back');
},
icon: const Icon(Icons.refresh),
),
@@ -750,10 +900,34 @@ class EgyptCardAI extends StatelessWidget {
return Card(
child: InkWell(
onTap: () async {
- ai.allMethodForAI(
- 'this extracted car license analyze it to get Json just without any text for keys[make, year, chassis, model, engine, displacement, cylinders, fuel, color,and color_hex from color inspection_date,assurnceNumber, tax_expiry,make date format year-month-day',
- AppLink.uploadEgypt,
- 'car_back');
+ ai.allMethodForAI("""
+Analyze the extracted car license information and create a JSON object with the following keys:
+
+{
+ "make": "",
+ "year": "",
+ "chassis": "",
+ "model": "",
+ "engine": "",
+ "displacement": "",
+ "cylinders": "",
+ "fuel": "",
+ "color": "",
+ "color_hex": "",
+ "inspection_date": "",
+ "assuranceNumber": "",
+ "tax_expiry": ""
+}
+
+Important notes:
+1. For dates (inspection_date and tax_expiry), use the format YYYY-MM-DD with Latin numerals (0-9).
+2. Convert the color name to its corresponding hex color code for the 'color_hex' field.
+3. Ensure all numeric values (year, displacement, cylinders) are in Latin numerals.
+4. If any information is missing, leave the corresponding field as an empty string.
+5. Do not include any explanatory text in the JSON fields, only the extracted values.
+
+Please fill in the JSON object with the extracted information, following these guidelines.
+""", AppLink.uploadEgypt, 'car_back');
},
child: Column(
children: [
@@ -796,7 +970,25 @@ class EgyptCardAI extends StatelessWidget {
IconButton(
onPressed: () async {
await ai.allMethodForAI(
- 'Write a JSON object from the following information extracted from the provided Arabic text:["InspectionResult": ,"NationalID","FullName","IssueDate"]make date format year-month-day ,and add spaces in text',
+ """
+Write a JSON object from the following information extracted from the provided Arabic text:
+
+{
+ "InspectionResult": "",
+ "NationalID": "",
+ "FullName": "",
+ "IssueDate": "" // Format: YYYY-MM-DD
+}
+
+Important notes:
+1. For the IssueDate, ensure the date is in YYYY-MM-DD format using Latin numerals (0-9).
+2. Add appropriate spaces in all text fields to ensure readability.
+3. If any information is missing, leave the corresponding field as an empty string.
+4. Ensure all text is properly formatted and spaces are used correctly.
+5. Convert any Arabic numerals to Latin numerals (0-9) where applicable.
+
+Please fill in the JSON object with the extracted information, following these guidelines.
+""",
AppLink.uploadEgypt,
'criminalRecord',
);
@@ -834,7 +1026,25 @@ class EgyptCardAI extends StatelessWidget {
child: InkWell(
onTap: () async {
await ai.allMethodForAI(
- 'Write a JSON object from the following information extracted from the provided Arabic text:["InspectionResult": ,"NationalID","FullName","IssueDate"]make date format year-month-day ,and add spaces in text',
+ """
+Write a JSON object from the following information extracted from the provided Arabic text:
+
+{
+ "InspectionResult": "",
+ "NationalID": "",
+ "FullName": "",
+ "IssueDate": "" // Format: YYYY-MM-DD
+}
+
+Important notes:
+1. For the IssueDate, ensure the date is in YYYY-MM-DD format using Latin numerals (0-9).
+2. Add appropriate spaces in all text fields to ensure readability.
+3. If any information is missing, leave the corresponding field as an empty string.
+4. Ensure all text is properly formatted and spaces are used correctly.
+5. Convert any Arabic numerals to Latin numerals (0-9) where applicable.
+
+Please fill in the JSON object with the extracted information, following these guidelines.
+""",
AppLink.uploadEgypt,
'criminalRecord',
);
diff --git a/lib/views/auth/captin/cards/sms_signup.dart b/lib/views/auth/captin/cards/sms_signup.dart
index 9446555..986841b 100644
--- a/lib/views/auth/captin/cards/sms_signup.dart
+++ b/lib/views/auth/captin/cards/sms_signup.dart
@@ -100,7 +100,7 @@ class SmsSignupEgypt extends StatelessWidget {
);
}),
],
- isleading: true,
+ isleading: false,
);
}
}
diff --git a/lib/views/home/my_wallet/walet_captain.dart b/lib/views/home/my_wallet/walet_captain.dart
index f033ac4..04dfd4e 100644
--- a/lib/views/home/my_wallet/walet_captain.dart
+++ b/lib/views/home/my_wallet/walet_captain.dart
@@ -4,6 +4,7 @@ import 'package:SEFER/controller/functions/tts.dart';
import 'package:SEFER/controller/home/payment/paymob_payout.dart';
import 'package:SEFER/views/home/my_wallet/bank_account_egypt.dart';
import 'package:SEFER/views/home/my_wallet/payment_history_driver_page.dart';
+import 'package:SEFER/views/widgets/mydialoug.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:SEFER/constant/box_name.dart';
@@ -28,9 +29,11 @@ class WalletCaptain extends StatelessWidget {
WalletCaptain({super.key});
CaptainWalletController captainWalletController =
Get.put(CaptainWalletController());
+
@override
Widget build(BuildContext context) {
// Get.put(MapDriverController()).totalPricePassenger = '0';
+ captainWalletController.refreshCaptainWallet();
return MyScafolld(
title: 'Driver Wallet'.tr,
body: [
@@ -41,7 +44,6 @@ class WalletCaptain extends StatelessWidget {
: Padding(
padding: const EdgeInsets.all(10),
child: ListView(
- // crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(),
Container(
@@ -389,6 +391,125 @@ class WalletCaptain extends StatelessWidget {
height: 30,
),
+ GetBuilder(
+ builder: (captainWalletController) {
+ return Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Row(
+ children: [
+ SizedBox(
+ width: Get.width * .95,
+ // height: Get.height * .1,
+ // decoration: AppStyle.boxDecoration,
+ child: Stack(
+ children: [
+ InkWell(
+ onTap: () {
+ MyDialog().getDialog(
+ 'Morning Promo'.tr,
+ "this is count of your all trips in the morning promo today from 7:00am-10:00am"
+ .tr, () {
+ Get.back();
+ });
+ },
+ child: LinearProgressIndicator(
+ minHeight: 35,
+ color: AppColor.blueColor,
+ borderRadius:
+ BorderRadius.circular(12),
+ backgroundColor: AppColor.accentColor,
+ value: double.parse(
+ captainWalletController
+ .walletDate['message'][0]
+ ['morning_count']
+ .toString()) /
+ 5,
+ ),
+ ),
+ Row(
+ mainAxisAlignment:
+ MainAxisAlignment.center,
+ children: [
+ Text(
+ 'Morning Promo Rides'.tr,
+ style: AppStyle.title,
+ ),
+ const SizedBox(
+ width: 20,
+ ),
+ Text(
+ '${captainWalletController.walletDate['message'][0]['morning_count']} / 5',
+ style: AppStyle.title,
+ ),
+ ],
+ ),
+ ],
+ ),
+ )
+ ],
+ ),
+ );
+ }),
+ GetBuilder(
+ builder: (captainWalletController) {
+ return Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Row(
+ children: [
+ SizedBox(
+ width: Get.width * .95,
+ // height: Get.height * .1,
+ // decoration: AppStyle.boxDecoration,
+ child: Stack(
+ children: [
+ InkWell(
+ onTap: () {
+ MyDialog().getDialog(
+ 'Afternoon Promo'.tr,
+ "this is count of your all trips in the Afternoon promo today from 3:00pm-6:00 pm"
+ .tr, () {
+ Get.back();
+ });
+ },
+ child: LinearProgressIndicator(
+ minHeight: 35,
+ color: AppColor.blueColor,
+ borderRadius:
+ BorderRadius.circular(12),
+ backgroundColor: AppColor.accentColor,
+ value: double.parse(
+ captainWalletController
+ .walletDate['message'][0]
+ ['afternoon_count']
+ .toString()) /
+ 5,
+ ),
+ ),
+ Row(
+ mainAxisAlignment:
+ MainAxisAlignment.center,
+ children: [
+ Text(
+ 'Afternoon Promo Rides'.tr,
+ style: AppStyle.title,
+ ),
+ const SizedBox(
+ width: 20,
+ ),
+ Text(
+ '${captainWalletController.walletDate['message'][0]['afternoon_count']} / 5',
+ style: AppStyle.title,
+ ),
+ ],
+ ),
+ ],
+ ),
+ )
+ ],
+ ),
+ );
+ }),
+
Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Row(
diff --git a/lib/views/widgets/mydialoug.dart b/lib/views/widgets/mydialoug.dart
new file mode 100644
index 0000000..5fb23b7
--- /dev/null
+++ b/lib/views/widgets/mydialoug.dart
@@ -0,0 +1,43 @@
+import 'dart:ui';
+
+import 'package:flutter/material.dart';
+import 'package:get/get.dart';
+
+import '../../constant/colors.dart';
+import '../../constant/style.dart';
+import '../../controller/functions/tts.dart';
+import 'elevated_btn.dart';
+
+class MyDialog extends GetxController {
+ void getDialog(String title, String? midTitle, VoidCallback onPressed) {
+ final textToSpeechController = Get.put(TextToSpeechController());
+ Get.defaultDialog(
+ title: title,
+ titleStyle: AppStyle.title,
+ middleTextStyle: AppStyle.title,
+ content: Column(
+ children: [
+ IconButton(
+ onPressed: () async {
+ await textToSpeechController.speakText(title ?? midTitle!);
+ },
+ icon: const Icon(Icons.headphones)),
+ Text(
+ midTitle!,
+ style: AppStyle.title,
+ )
+ ],
+ ),
+ confirm: MyElevatedButton(
+ title: 'Ok'.tr,
+ onPressed: onPressed,
+ kolor: AppColor.greenColor,
+ ),
+ cancel: MyElevatedButton(
+ title: 'Cancel',
+ kolor: AppColor.redColor,
+ onPressed: () {
+ Get.back();
+ }));
+ }
+}