diff --git a/.env b/.env
index 07042e8..0de5c3c 100644
--- a/.env
+++ b/.env
@@ -39,3 +39,77 @@ payMobOutClientSecrret='wcP2bUQBRYy254hjCJhNlOatefDzifNDnXRQSiu6UhhcXfZdyCyiBaUr
payMobOutClient_id='gnBTH5kGzR4RGPwzEUxIKCJx9SA5zAwpXiX4vaiTXrXlBl'
payMobOutPassword='#f9vZtxHdIGvAbl5wWMQkvgZTXrXlBl'
payMobOutUserName='zjujl_qvo_fwjfgjlXrXlBl'
+
+
+
+
+
+import '../controller/functions/encrypt.dart';
+import '../env/env.dart';
+import 'char_map.dart';
+import 'credential.dart';
+
+class AK {
+ static final AC a = AC();
+ static final String publishableKey =
+ KeyEncryption.decryptKey(Env.stripePublishableKe);
+ static final String secretKey = KeyEncryption.decryptKey(Env.secretKey);
+ static final String basicAuthCredentials =
+ KeyEncryption.decryptKey(Env.basicAuthCredentials);
+ static final String accountSIDTwillo =
+ KeyEncryption.decryptKey(Env.accountSIDTwillo);
+ static final String serverAPI = KeyEncryption.decryptKey(Env.serverAPI);
+ static final String mapAPIKEY = KeyEncryption.decryptKey(Env.mapAPIKEY);
+ static final String twilloRecoveryCode =
+ KeyEncryption.decryptKey(Env.twilloRecoveryCode);
+ static final String authTokenTwillo =
+ KeyEncryption.decryptKey(Env.authTokenTwillo);
+ static final String chatGPTkey = KeyEncryption.decryptKey(Env.chatGPTkey);
+ static final String transactionCloude =
+ KeyEncryption.decryptKey(Env.transactionCloude);
+ static final String visionApi = KeyEncryption.decryptKey(Env.visionApi);
+ static final String chatGPTkeySefer =
+ KeyEncryption.decryptKey(Env.chatGPTkeySefer);
+ static final String chatGPTkeySeferNew =
+ KeyEncryption.decryptKey(Env.chatGPTkeySeferNew);
+ static final String serverPHP = Env.serverPHP;
+ static final String llamaKey = KeyEncryption.decryptKey(Env.llamaKey);
+ static final String cohere = KeyEncryption.decryptKey(Env.cohere);
+ static final String claudeAiAPI = KeyEncryption.decryptKey(Env.claudeAiAPI);
+ static final String payPalClientId =
+ KeyEncryption.decryptKey(Env.payPalClientId);
+ static final String payPalSecret = KeyEncryption.decryptKey(Env.payPalSecret);
+ static final String geminiApi = KeyEncryption.decryptKey(Env.geminiApi);
+ static final String agoraAppId = KeyEncryption.decryptKey(Env.agoraAppId);
+ static final String agoraAppCertificate =
+ KeyEncryption.decryptKey(Env.agoraAppCertificate);
+ static final String payPalClientIdLive =
+ KeyEncryption.decryptKey(Env.payPalClientIdLive);
+ static final String payPalSecretLive =
+ KeyEncryption.decryptKey(Env.payPalSecretLive);
+ static final String integrationIdPayMob =
+ KeyEncryption.decryptKey(Env.integrationIdPayMob);
+ static final String passwordPayMob =
+ KeyEncryption.decryptKey(Env.passwordPayMob);
+ static final String usernamePayMob =
+ KeyEncryption.decryptKey(Env.usernamePayMob);
+ static final String payMobApikey = KeyEncryption.decryptKey(Env.payMobApikey);
+ static final String integrationIdPayMobWallet =
+ KeyEncryption.decryptKey(Env.integrationIdPayMobWallet);
+ static final String smsPasswordEgypt =
+ KeyEncryption.decryptKey(Env.smsPasswordEgypt);
+ static final String ocpApimSubscriptionKey = Env.ocpApimSubscriptionKey;
+ static final String chatGPTkeySeferNew4 =
+ KeyEncryption.decryptKey(Env.chatGPTkeySeferNew4);
+ static final String anthropicAIkeySeferNew =
+ KeyEncryption.decryptKey(Env.anthropicAIkeySeferNew);
+ static final String llama3Key = KeyEncryption.decryptKey(Env.llama3Key);
+ static final String payMobOutClientSecrret =
+ KeyEncryption.decryptKey(Env.payMobOutClientSecrret);
+ static final String payMobOutClient_id =
+ KeyEncryption.decryptKey(Env.payMobOutClient_id);
+ static final String payMobOutPassword =
+ KeyEncryption.decryptKey(Env.payMobOutPassword);
+ static final String payMobOutUserName =
+ KeyEncryption.decryptKey(Env.payMobOutUserName);
+}
diff --git a/android/app/build.gradle b/android/app/build.gradle
index b810933..a8c118c 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 42
- versionName '1.5.42'
+ versionCode 45
+ versionName '1.5.45'
// manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml']
}
diff --git a/android/app/src/main/res/drawable/app_icon.png b/android/app/src/main/res/drawable/app_icon.png
index 624b71d..96cc55a 100644
Binary files a/android/app/src/main/res/drawable/app_icon.png and b/android/app/src/main/res/drawable/app_icon.png differ
diff --git a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png
index 4a25ec9..222a4ef 100644
Binary files a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png and b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png
index 6c53777..288324a 100644
Binary files a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png and b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png
index 54f2de6..b190976 100644
Binary files a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png and b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
index c3949e8..6914bf0 100644
Binary files a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png and b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png
index 117b646..084f2e5 100644
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png and b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png differ
diff --git a/assets/images/lady1.png b/assets/images/lady1.png
new file mode 100644
index 0000000..48bbfef
Binary files /dev/null and b/assets/images/lady1.png differ
diff --git a/assets/images/logo.png b/assets/images/logo.png
index af75351..96cc55a 100644
Binary files a/assets/images/logo.png and b/assets/images/logo.png differ
diff --git a/assets/images/moto1.png b/assets/images/moto1.png
new file mode 100644
index 0000000..80322db
Binary files /dev/null and b/assets/images/moto1.png differ
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index d9ff29f..23b6af9 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -37,11 +37,11 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 40
+ 41
CFBundleSignature
????
CFBundleVersion
- 4.3.40
+ 4.3.41
FirebaseAppDelegateProxyEnabled
NO
GMSApiKey
diff --git a/lib/constant/links.dart b/lib/constant/links.dart
index 882f52d..e8f5ba4 100644
--- a/lib/constant/links.dart
+++ b/lib/constant/links.dart
@@ -190,9 +190,13 @@ class AppLink {
static String auth = '$server/auth';
static String login = "$auth/login.php";
+ static String getTesterApp = "$auth/Tester/getTesterApp.php";
+ static String updateTesterApp = "$auth/Tester/updateTesterApp.php";
static String signUp = "$auth/signup.php";
static String sendVerifyEmail = "$auth/sendVerifyEmail.php";
static String loginFromGooglePassenger = "$auth/loginFromGooglePassenger.php";
+ static String checkPhoneNumberISVerfiedPassenger =
+ "$auth/checkPhoneNumberISVerfiedPassenger.php";
static String passengerRemovedAccountEmail =
"$auth/passengerRemovedAccountEmail.php";
diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart
index a0f16a9..02c04c8 100644
--- a/lib/controller/auth/login_controller.dart
+++ b/lib/controller/auth/login_controller.dart
@@ -1,16 +1,15 @@
import 'dart:convert';
-import 'dart:math';
+import 'package:SEFER/constant/info.dart';
import 'package:SEFER/controller/firebase/firbase_messge.dart';
+import 'package:SEFER/views/auth/login_page.dart';
import 'package:SEFER/views/auth/sms_verfy_page.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:SEFER/constant/box_name.dart';
import 'package:SEFER/constant/links.dart';
import 'package:SEFER/controller/functions/crud.dart';
-import 'package:SEFER/controller/functions/secure_storage.dart';
import 'package:SEFER/main.dart';
-import 'package:SEFER/views/auth/verify_email_page.dart';
import 'package:SEFER/views/home/map_page_passenger.dart';
import 'package:location/location.dart';
@@ -24,12 +23,30 @@ class LoginController extends GetxController {
TextEditingController adminNameController = TextEditingController();
bool isAgreeTerms = false;
bool isloading = false;
-
+ late int isTest = 1;
void changeAgreeTerm() {
isAgreeTerms = !isAgreeTerms;
update();
}
+ getAppTester(String appPlatform) async {
+ var res = await CRUD()
+ .get(link: AppLink.getTesterApp, payload: {'appPlatform': appPlatform});
+ if (res != 'failure') {
+ var d = jsonDecode(res);
+
+ isTest = d['message'][0]['isTest'];
+ update();
+ } else {
+ return false;
+ }
+ }
+
+ updateAppTester(String appPlatform) async {
+ await CRUD().post(
+ link: AppLink.updateTesterApp, payload: {'appPlatform': appPlatform});
+ }
+
void saveAgreementTerms() {
box.write(BoxName.agreeTerms, 'agreed');
update();
@@ -49,7 +66,6 @@ class LoginController extends GetxController {
'id': passengerID,
});
if (res == 'Failure') {
- //Failure
Get.offAll(SmsSignupEgypt());
isloading = false;
update();
@@ -142,57 +158,41 @@ class LoginController extends GetxController {
void login() async {
isloading = true;
update();
- var res = await CRUD().get(link: AppLink.login, payload: {
- 'email': emailController.text,
- 'phone': phoneController.text,
- 'password': passwordController.text
- });
+ var res = await CRUD().get(
+ link: AppLink.loginFromGooglePassenger,
+ payload: {
+ 'email': emailController.text,
+ 'id': passwordController.text
+ });
+
isloading = false;
update();
if (res == 'Failure') {
- Get.snackbar('Failure', '', backgroundColor: Colors.red);
+ //Failure
+ Get.offAll(() => LoginPage());
+ isloading = false;
+ update();
+ // Get.snackbar("User does not exist.".tr, '', backgroundColor: Colors.red);
} else {
var jsonDecoeded = jsonDecode(res);
if (jsonDecoeded.isNotEmpty) {
- if (jsonDecoeded['status'] == 'success') {
- if (jsonDecoeded['data'][0]['verified'] == 1) {
- box.write(BoxName.passengerID, jsonDecoeded['data'][0]['id']);
- box.write(BoxName.email, jsonDecoeded['data'][0]['email']);
- box.write(
- BoxName.name,
- jsonDecoeded['data'][0]['first_name'] +
- ' ' +
- jsonDecoeded['data'][0]['last_name']);
- box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']);
- SecureStorage().saveData(BoxName.password, passwordController.text);
- Get.offAll(() => const MapPagePassenger());
- isloading = false;
- update();
+ if (jsonDecoeded['status'] == 'success' &&
+ jsonDecoeded['data'][0]['verified'] == 1) {
+ //
+ box.write(BoxName.isVerified, '1');
+ box.write(BoxName.email, jsonDecoeded['data'][0]['email']);
+ box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']);
+ box.write(BoxName.passengerID, passwordController.text);
+ // var token = await CRUD().get(link: AppLink.getTokens, payload: {
+ // 'passengerID': box.read(BoxName.passengerID).toString()
+ // });
+ await updateAppTester(AppInformation.appName);
- await CRUD().post(link: AppLink.addTokens, payload: {
- 'token': box.read(BoxName.tokenFCM),
- 'passengerID': box.read(BoxName.passengerID).toString()
- });
- } else {
- isloading = false;
- update();
- Get.defaultDialog(
- title: 'You must Verify email !.'.tr,
- middleText: '',
- backgroundColor: Colors.yellow[300],
- onConfirm: () async {
- int randomNumber = Random().nextInt(100000) + 1;
- await CRUD().post(link: AppLink.sendVerifyEmail, payload: {
- 'email': emailController.text,
- 'token': randomNumber.toString(),
- });
- Get.to(() => const VerifyEmailPage());
- },
- );
- }
- } else if (jsonDecoeded['status'] == 'Failure') {
- Get.snackbar(jsonDecoeded['status'], jsonDecoeded['data'],
- backgroundColor: Colors.redAccent);
+ Get.offAll(() => const MapPagePassenger());
+ } else {
+ // Get.offAll(() => SmsSignupEgypt());
+ // Get.snackbar(jsonDecoeded['status'], jsonDecoeded['data'],
+ // backgroundColor: Colors.redAccent);
isloading = false;
update();
}
@@ -245,7 +245,11 @@ class LoginController extends GetxController {
@override
void onInit() async {
// permissionLocation = await Permission.locationWhenInUse.isGranted;
-
+ await getAppTester(AppInformation.appName);
+ if (isTest == 0 && box.read(BoxName.passengerID) != null) {
+ await loginUsingCredentials(
+ box.read(BoxName.passengerID), box.read(BoxName.email));
+ }
super.onInit();
}
}
diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart
index d28c29c..f57ef98 100644
--- a/lib/controller/auth/register_controller.dart
+++ b/lib/controller/auth/register_controller.dart
@@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:convert';
import 'dart:math';
+import 'package:SEFER/constant/colors.dart';
import 'package:SEFER/views/home/map_page_passenger.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -88,18 +89,33 @@ class RegisterController extends GetxController {
update();
if (formKey3.currentState!.validate()) {
if (box.read(BoxName.countryCode) == 'Egypt') {
- await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: {
+ var responseCheker = await CRUD()
+ .post(link: AppLink.checkPhoneNumberISVerfiedPassenger, payload: {
'phone_number': '+2${phoneController.text}',
- 'token': randomNumber.toString(),
});
+ if (responseCheker != 'failure') {
+ var d = jsonDecode(responseCheker);
+ if (d['message'][0]['verified'] == 1) {
+ Get.snackbar('Phone number is verified before'.tr, '',
+ backgroundColor: AppColor.greenColor);
+ box.write(BoxName.isVerified, '1');
+ box.write(BoxName.phone, '+2${phoneController.text}');
+ Get.offAll(const MapPagePassenger());
+ }
+ } else {
+ await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: {
+ 'phone_number': '+2${phoneController.text}',
+ 'token': randomNumber.toString(),
+ });
- await smsEgyptController.sendSmsEgypt(
- phoneController.text.toString(), randomNumber.toString());
- isSent = true;
- remainingTime = 300; // Reset to 5 minutes
- startTimer();
- isLoading = false;
- update();
+ await smsEgyptController.sendSmsEgypt(
+ phoneController.text.toString(), randomNumber.toString());
+ isSent = true;
+ remainingTime = 300; // Reset to 5 minutes
+ startTimer();
+ isLoading = false;
+ update();
+ }
}
}
}
@@ -129,7 +145,7 @@ class RegisterController extends GetxController {
link: AppLink.signUp,
payload: payload,
);
- if (jsonDecode(res1)['status'] == 'success') {
+ if (res1 != 'failure') {
box.write(BoxName.isVerified, '1');
box.write(BoxName.phone, '+2${phoneController.text}');
Get.offAll(const MapPagePassenger());
diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart
index 8bfa17f..a79d8c8 100644
--- a/lib/controller/firebase/firbase_messge.dart
+++ b/lib/controller/firebase/firbase_messge.dart
@@ -117,8 +117,8 @@ class FirebaseMessagesController extends GetxController {
}
void fireBaseTitles(RemoteMessage message) {
- if (message.notification!.title! == 'Order') {
- } else if (message.notification!.title! == 'Apply Ride') {
+ if (message.notification!.title! == 'Order'.tr) {
+ } else if (message.notification!.title! == 'Apply Ride'.tr) {
var passengerList = message.data['passengerList'];
var myList = jsonDecode(passengerList) as List;
@@ -130,7 +130,7 @@ class FirebaseMessagesController extends GetxController {
NotificationController().showNotification(
'Apply Order'.tr, 'Driver Applied the Ride for You'.tr, 'order1');
// driverAppliedTripSnakBar();
- } else if (message.notification!.title! == 'Promo') {
+ } else if (message.notification!.title! == 'Promo'.tr) {
NotificationController()
.showNotification('Promo', 'Show latest promo'.tr, 'promo');
Get.to(const PromosPassengerPage());
@@ -143,11 +143,11 @@ class FirebaseMessagesController extends GetxController {
'rideId': myList[0].toString(),
'driverId': myList[1].toString(),
});
- } else if (message.notification!.title! == 'token change') {
+ } else if (message.notification!.title! == 'token change'.tr) {
NotificationController()
- .showNotification('token change', 'token change', 'cancel');
+ .showNotification('token change'.tr, 'token change'.tr, 'cancel');
GoogleSignInHelper.signOut();
- } else if (message.notification!.title! == 'DriverIsGoingToPassenger') {
+ } else if (message.notification!.title! == 'DriverIsGoingToPassenger'.tr) {
Get.find().isDriverInPassengerWay = true;
Get.find().update();
NotificationController().showNotification('Driver is Going To You'.tr,
@@ -160,32 +160,32 @@ class FirebaseMessagesController extends GetxController {
passengerDialog(message.notification!.body!);
update();
- } else if (message.notification!.title! == 'message From Driver'.tr) {
+ } else if (message.notification!.title! == 'message From Driver') {
NotificationController()
.showNotification('message From passenger'.tr, ''.tr, 'tone2');
passengerDialog(message.notification!.body!);
update();
- } else if (message.notification!.title! == 'RideIsBegin') {
+ } else if (message.notification!.title! == 'RideIsBegin'.tr) {
Get.find().getBeginRideFromDriver();
// Get.snackbar('RideIsBegin', '', backgroundColor: AppColor.greenColor);
box.write(BoxName.passengerWalletTotal, '0');
NotificationController()
.showNotification('Trip is Begin'.tr, ''.tr, 'start');
update();
- } else if (message.notification!.title! == 'Hi ,I will go now') {
+ } else if (message.notification!.title! == 'Hi ,I will go now'.tr) {
// Get.snackbar('Hi ,I will go now', '',
// backgroundColor: AppColor.greenColor);
NotificationController().showNotification(
'Passenger come to you'.tr, 'Hi ,I will go now'.tr, 'tone2');
update();
- } else if (message.notification!.title! == 'Hi ,I Arrive your site') {
+ } else if (message.notification!.title! == 'Hi ,I Arrive your site'.tr) {
NotificationController()
.showNotification('Hi ,I Arrive your site'.tr, ''.tr, 'tone2');
driverArrivePassengerDialoge();
update();
- } else if (message.notification!.title! == 'Driver Finish Trip') {
+ } else if (message.notification!.title! == 'Driver Finish Trip'.tr) {
var myListString = message.data['passengerList'];
var driverList = jsonDecode(myListString) as List;
NotificationController().showNotification(
@@ -204,7 +204,7 @@ class FirebaseMessagesController extends GetxController {
'price': driverList[3].toString()
});
// }
- } else if (message.notification!.title! == "Finish Monitor") {
+ } else if (message.notification!.title! == "Finish Monitor".tr) {
Get.defaultDialog(
titleStyle: AppStyle.title,
title: 'Trip finished '.tr,
@@ -214,6 +214,8 @@ class FirebaseMessagesController extends GetxController {
onPressed: () {
Get.offAll(() => const MapPagePassenger());
}));
+ } else if (message.notification!.title! == "Trip Monitoring".tr) {
+ Get.to(() => const TripMonitor());
} else if (message.notification!.title! == 'Call Income') {
try {
var myListString = message.data['passengerList'];
@@ -232,7 +234,7 @@ class FirebaseMessagesController extends GetxController {
remoteID: driverList[2].toString(),
));
} catch (e) {}
- } else if (message.notification!.title! == 'Call Income from Driver') {
+ } else if (message.notification!.title! == 'Call Income from Driver'.tr) {
try {
var myListString = message.data['passengerList'];
var driverList = jsonDecode(myListString) as List;
@@ -250,7 +252,7 @@ class FirebaseMessagesController extends GetxController {
remoteID: driverList[2].toString(),
));
} catch (e) {}
- } else if (message.notification!.title! == 'Call End') {
+ } else if (message.notification!.title! == 'Call End'.tr) {
try {
var myListString = message.data['passengerList'];
var driverList = jsonDecode(myListString) as List;
@@ -264,7 +266,7 @@ class FirebaseMessagesController extends GetxController {
// Assuming GetMaterialApp is initialized and context is valid for navigation
// Get.off(const CallPage());
} catch (e) {}
- } else if (message.notification!.title! == 'Driver Cancel Your Trip') {
+ } else if (message.notification!.title! == 'Driver Cancel Your Trip'.tr) {
// Get.snackbar(
// 'You will be pay the cost to driver or we will get it from you on next trip'
// .tr,
@@ -294,7 +296,7 @@ class FirebaseMessagesController extends GetxController {
// );
// }
- else if (message.notification!.title! == 'Order Applied') {
+ else if (message.notification!.title! == 'Order Applied'.tr) {
NotificationController().showNotification(
'The order Accepted by another Driver'.tr,
'We regret to inform you that another driver has accepted this order.'
diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart
index 5006ebb..7a6c3d0 100644
--- a/lib/controller/functions/crud.dart
+++ b/lib/controller/functions/crud.dart
@@ -28,6 +28,7 @@ class CRUD {
},
);
print(response.request);
+ print(response.body);
// if (response.statusCode == 200) {
var jsonData = jsonDecode(response.body);
if (jsonData['status'] == 'success') {
@@ -227,7 +228,8 @@ class CRUD {
'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}',
},
);
-
+ print(response.request);
+ print(response.body);
var jsonData = jsonDecode(response.body);
if (response.statusCode == 200) {
if (jsonData['status'] == 'success') {
diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart
index be86bf3..2fb39b3 100644
--- a/lib/controller/home/map_passenger_controller.dart
+++ b/lib/controller/home/map_passenger_controller.dart
@@ -45,7 +45,9 @@ class MapPassengerController extends GetxController {
TextEditingController wayPoint4Controller = TextEditingController();
TextEditingController sosPhonePassengerProfile = TextEditingController();
TextEditingController whatsAppLocationText = TextEditingController();
+ TextEditingController messageToDriver = TextEditingController();
final sosFormKey = GlobalKey();
+ final messagesFormKey = GlobalKey();
final increaseFeeFormKey = GlobalKey();
List data = [];
List bounds = [];
@@ -96,6 +98,8 @@ class MapPassengerController extends GetxController {
BitmapDescriptor startIcon = BitmapDescriptor.defaultMarker;
BitmapDescriptor endIcon = BitmapDescriptor.defaultMarker;
BitmapDescriptor carIcon = BitmapDescriptor.defaultMarker;
+ BitmapDescriptor motoIcon = BitmapDescriptor.defaultMarker;
+ BitmapDescriptor ladyIcon = BitmapDescriptor.defaultMarker;
double height = 150;
DateTime currentTime = DateTime.now();
final location = Location();
@@ -1235,6 +1239,7 @@ class MapPassengerController extends GetxController {
void timerEnded() async {
runEvery30SecondsUntilConditionMet();
isCancelRidePageShown = false;
+ print('isCancelRidePageShown: ${isCancelRidePageShown}');
update();
}
@@ -1266,7 +1271,7 @@ class MapPassengerController extends GetxController {
driversToken.remove(driverToken);
for (var i = 1; i < driversToken.length; i++) {
FirebaseMessagesController().sendNotificationToAnyWithoutData(
- 'Order Applied',
+ 'Order Applied'.tr,
'$driverName Apply order\nTake attention in other order'.tr,
driversToken[i],
'start.wav',
@@ -1345,9 +1350,9 @@ class MapPassengerController extends GetxController {
i < dataCarsLocationByPassenger['message'].length;
i++) {
var json = dataCarsLocationByPassenger['message'][i];
- CarLocationModel model = CarLocationModel.fromJson(json);
+ // CarLocationModel model = CarLocationModel.fromJson(json);
if (carLocationsModels.length < i + 1) {
- carLocationsModels.add(model);
+ // carLocationsModels.add(model);
markers.add(
Marker(
markerId: MarkerId(json['latitude']),
@@ -1356,13 +1361,17 @@ class MapPassengerController extends GetxController {
double.parse(json['longitude']),
),
rotation: double.parse(json['heading']),
- icon: carIcon,
+ icon: json['model'].toString().contains('دراجة')
+ ? motoIcon
+ : json['gender'] == 'Male'
+ ? carIcon
+ : ladyIcon,
),
);
driversToken.add(json['token']);
// driversToken = json['token'];
} else {
- carLocationsModels[i] = model;
+ // carLocationsModels[i] = model;
markers[i] = Marker(
markerId: MarkerId(json['latitude']),
position: LatLng(
@@ -1370,7 +1379,11 @@ class MapPassengerController extends GetxController {
double.parse(json['longitude']),
),
rotation: double.parse(json['heading']),
- icon: carIcon,
+ icon: json['model'].contains('دراجة')
+ ? motoIcon
+ : json['gender'] == 'Male'
+ ? carIcon
+ : ladyIcon,
);
// driversToken = json['token'];
driversToken.add(json['token']);
@@ -1517,7 +1530,7 @@ class MapPassengerController extends GetxController {
for (var i = 0; i < loopCount; i++) {
// Wait for 50 seconds.
await Future.delayed(const Duration(seconds: 4));
- if (rideTimerBegin == true) {
+ if (rideTimerBegin == true || statusRide == 'Apply') {
await getDriverCarsLocationToPassengerAfterApplied();
}
reloadMarkerDriverCarsLocationToPassengerAfterApplied();
@@ -1566,8 +1579,16 @@ class MapPassengerController extends GetxController {
rotation: double.parse(
datadriverCarsLocationToPassengerAfterApplied['message'][0]
['heading']),
- icon: carIcon,
+ icon: datadriverCarsLocationToPassengerAfterApplied['message'][0]['model']
+ .contains('دراجة')
+ ? motoIcon
+ : datadriverCarsLocationToPassengerAfterApplied['message'][0]
+ ['gender'] ==
+ 'Male'
+ ? carIcon
+ : ladyIcon, // Default to carIcon if gender is not Male or Female
);
+
markers.add(driverAcceptedMarker);
// update();
mapController?.animateCamera(CameraUpdate.newLatLng(driverPosition));
@@ -1620,8 +1641,9 @@ class MapPassengerController extends GetxController {
"order_id": rideId.toString(), // Convert to String
"status": 'Cancel'
});
+ print('Cancel');
FirebaseMessagesController().sendNotificationToDriverMAP(
- 'Cancel Trip'.tr,
+ 'Cancel Trip',
'Trip Cancelled'.tr,
driverToken,
[],
@@ -1922,6 +1944,28 @@ class MapPassengerController extends GetxController {
});
}
+ void addCustomMotoIcon() {
+ ImageConfiguration config = ImageConfiguration(
+ size: const Size(30, 30), devicePixelRatio: Get.pixelRatio);
+ BitmapDescriptor.fromAssetImage(config, 'assets/images/moto1.png',
+ mipmaps: false)
+ .then((value) {
+ motoIcon = value;
+ update();
+ });
+ }
+
+ void addCustomLadyIcon() {
+ ImageConfiguration config = ImageConfiguration(
+ size: const Size(30, 30), devicePixelRatio: Get.pixelRatio);
+ BitmapDescriptor.fromAssetImage(config, 'assets/images/lady1.png',
+ mipmaps: false)
+ .then((value) {
+ ladyIcon = value;
+ update();
+ });
+ }
+
void addCustomStepIcon() {
ImageConfiguration config = ImageConfiguration(
size: const Size(30, 30), devicePixelRatio: Get.pixelRatio);
@@ -2253,7 +2297,7 @@ class MapPassengerController extends GetxController {
isLoading = false;
update();
var url =
- ('${AppLink.googleMapsLink}directions/json?&language=${box.read(BoxName.lang)}&avoid=tolls|ferries&destination=$destination&origin=$origin&key=${AK.mapAPIKEY}');
+ ('${AppLink.googleMapsLink}directions/json?&language=ar&avoid=tolls|ferries&destination=$destination&origin=$origin&key=${AK.mapAPIKEY}');
var response = await CRUD().getGoogleApi(link: url, payload: {});
data = response['routes'][0]['legs'];
@@ -2342,14 +2386,17 @@ class MapPassengerController extends GetxController {
// Initialize the short address
String shortAddress = '';
- // Add the first part (usually the most specific location)
if (parts.isNotEmpty) {
+ // Add the first part (usually the most specific location)
shortAddress += parts[0];
}
- // Add the district or area name (usually the third part in this format)
if (parts.length > 2) {
+ // Add the district or area name (usually the third part in Arabic format)
shortAddress += '، ${parts[2]}';
+ } else if (parts.length > 1) {
+ // Add the second part for English or shorter addresses
+ shortAddress += '، ${parts[1]}';
}
// Add the country (usually the last part)
@@ -2363,6 +2410,21 @@ class MapPassengerController extends GetxController {
.where((part) => !RegExp(r'^[0-9 ]+$').hasMatch(part.trim()))
.join('،');
+ // Check if the address is in English
+ bool isEnglish =
+ RegExp(r'^[a-zA-Z0-9 ]+$').hasMatch(shortAddress.replaceAll('،', ''));
+
+ if (isEnglish) {
+ // Further processing for English addresses
+ List englishParts = shortAddress.split('،');
+ if (englishParts.length > 2) {
+ shortAddress =
+ '${englishParts[0]}، ${englishParts[1]}، ${englishParts.last}';
+ } else if (englishParts.length > 1) {
+ shortAddress = '${englishParts[0]}، ${englishParts.last}';
+ }
+ }
+
return shortAddress;
}
@@ -2809,6 +2871,8 @@ class MapPassengerController extends GetxController {
readyWayPoints();
addCustomPicker();
addCustomCarIcon();
+ addCustomLadyIcon();
+ addCustomMotoIcon();
addCustomStepIcon();
addCustomStartIcon();
addCustomEndIcon();
diff --git a/lib/controller/home/trip_monitor_controller.dart b/lib/controller/home/trip_monitor_controller.dart
index 6ab1719..d593157 100644
--- a/lib/controller/home/trip_monitor_controller.dart
+++ b/lib/controller/home/trip_monitor_controller.dart
@@ -17,6 +17,8 @@ class TripMonitorController extends GetxController {
late Timer timer;
late LatLng parentLocation;
BitmapDescriptor carIcon = BitmapDescriptor.defaultMarker;
+ BitmapDescriptor motoIcon = BitmapDescriptor.defaultMarker;
+ BitmapDescriptor ladyIcon = BitmapDescriptor.defaultMarker;
double rotation = 0;
double speed = 0;
@@ -65,6 +67,27 @@ class TripMonitorController extends GetxController {
carIcon = value;
update();
});
+ void addCustomMotoIcon() {
+ ImageConfiguration config = ImageConfiguration(
+ size: const Size(30, 30), devicePixelRatio: Get.pixelRatio);
+ BitmapDescriptor.fromAssetImage(config, 'assets/images/moto1.png',
+ mipmaps: false)
+ .then((value) {
+ motoIcon = value;
+ update();
+ });
+ }
+
+ void addCustomLadyIcon() {
+ ImageConfiguration config = ImageConfiguration(
+ size: const Size(30, 30), devicePixelRatio: Get.pixelRatio);
+ BitmapDescriptor.fromAssetImage(config, 'assets/images/lady1.png',
+ mipmaps: false)
+ .then((value) {
+ ladyIcon = value;
+ update();
+ });
+ }
}
@override
diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart
index 6c1833e..80080b4 100644
--- a/lib/controller/local/translations.dart
+++ b/lib/controller/local/translations.dart
@@ -4,6 +4,22 @@ class MyTranslation extends Translations {
@override
Map> get keys => {
"ar": {
+ 'message From Driver': 'رسالة من السائق',
+ 'message From passenger': "رسالة من الراكب",
+ "Where are you, sir?": "أنا وصلت حضرتك فين.",
+ "I've been trying to reach you but your phone is off.":
+ "بحاول أكلمك التلفون مغلق.",
+ "Please don't be late": "أرجو عدم التأخير",
+ "Please don't be late, I'm waiting for you at the specified location.":
+ "أرجو عدم التأخير، أنا منتظرك على ال لوكيشن المحدد.",
+ "My location is correct. You can search for me using the navigation app":
+ "موقعي صحيح. يمكنك البحث عني باستخدام تطبيق الملاحة",
+ "Hello, I'm at the agreed-upon location":
+ "مرحباً، أنا في المكان المتفق عليه",
+ "message From Driver": "رسالة من السائق",
+
+ "How much longer will you be?": "قدامك قد إيه",
+ 'Phone number is verified before': "تم التحقق من رقم الهاتف مسبقاً",
'Change Ride': 'تغيير الرحلة',
'You can change the destination by long-pressing any point on the map':
'يمكنك تغيير الوجهة بالضغط مطولاً على أي نقطة على الخريطة',
@@ -423,7 +439,7 @@ iOS [https://getapp.cc/app/6458734951]
"تَلْتَزِم سَفَر بِالسَّلَامَة، وَيَتِمُّ فَحْص جَمِيع قَبَاطِنِنَا بِعِنَايَة وَفَحْص خَلْفِيَّتِهِم.",
"Driver Applied the Ride for You": "طَلَبَ السَّائِق الرِّحْلَة لَك",
"Show latest promo": "أَظْهِر آخِر عَرْض تَرْوِيجِي",
- "Cancel Trip": "إِلْغَاء الرِّحْلَة",
+ "Cancel Trip": "إلغاء الرحلة",
"Passenger Cancel Trip": "الرَّاكِب أَلْغَى الرِّحْلَة",
"Please stay on the picked point.":
"الرَّجَاء الْبَقَاء فِي النُّقْطَة الْمُحَدَّدَة.",
diff --git a/lib/controller/profile/profile_controller.dart b/lib/controller/profile/profile_controller.dart
index 5763af5..49b759f 100644
--- a/lib/controller/profile/profile_controller.dart
+++ b/lib/controller/profile/profile_controller.dart
@@ -69,6 +69,7 @@ class ProfileController extends GetxController {
MyElevatedButton(
title: 'Update'.tr,
onPressed: () async {
+ Get.back();
await updateColumn({
'id': box.read(BoxName.passengerID),
columnName: txtController.text,
@@ -76,7 +77,7 @@ class ProfileController extends GetxController {
if (columnName == 'first_name') {
box.write(BoxName.name, txtController.text);
}
- Get.back();
+
txtController.clear();
},
)
diff --git a/lib/views/auth/login_page.dart b/lib/views/auth/login_page.dart
index 015d36d..b8d14ce 100644
--- a/lib/views/auth/login_page.dart
+++ b/lib/views/auth/login_page.dart
@@ -3,6 +3,7 @@ import 'dart:io';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
+import 'package:flutter_font_icons/flutter_font_icons.dart';
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
import 'package:get/get.dart';
import 'package:SEFER/constant/box_name.dart';
@@ -17,6 +18,7 @@ import '../../controller/auth/apple_signin_controller.dart';
import '../../controller/auth/google_sign.dart';
import '../../controller/auth/login_controller.dart';
import '../home/profile/passenger_profile_page.dart';
+import '../widgets/mycircular.dart';
class LoginPage extends StatelessWidget {
final controller = Get.put(LoginController());
@@ -58,26 +60,194 @@ class LoginPage extends StatelessWidget {
width: Get.width * .3,
fit: BoxFit.fill,
),
- Container(
- decoration: AppStyle.boxDecoration1,
- height: Get.height * .3,
- width: Get.width * .8,
- child: Center(
- child: Text(
- 'Sign in with Google for easier email and name entry'
- .tr,
- textAlign: TextAlign.center,
- style: AppStyle.title,
+ Platform.isIOS && controller.isTest == 0
+ ? Container(
+ decoration: AppStyle.boxDecoration,
+ child: Column(
+ children: [
+ Form(
+ key: controller.formKey,
+ child: Padding(
+ padding: const EdgeInsets.all(16.0),
+ child: SingleChildScrollView(
+ child: Column(
+ children: [
+ TextFormField(
+ keyboardType: TextInputType
+ .emailAddress,
+ controller: controller
+ .emailController,
+ decoration: InputDecoration(
+ focusedBorder:
+ OutlineInputBorder(
+ borderSide:
+ const BorderSide(
+ color: AppColor
+ .primaryColor,
+ width: 2.0,
+ ),
+ borderRadius:
+ BorderRadius.circular(
+ 10),
+ ),
+ fillColor:
+ AppColor.accentColor,
+ hoverColor:
+ AppColor.accentColor,
+ focusColor:
+ AppColor.accentColor,
+ border: const OutlineInputBorder(
+ borderRadius:
+ BorderRadius.all(
+ Radius.circular(
+ 12))),
+ labelText: 'Email'.tr,
+ hintText:
+ 'Enter your email address'
+ .tr,
+ ),
+ validator: (value) {
+ if (value!.isEmpty ||
+ (!value.contains('@') ||
+ !value.contains(
+ '.'))) {
+ return 'Please enter Your Email.'
+ .tr;
+ }
+ return null;
+ },
+ ),
+ const SizedBox(
+ height: 15,
+ ),
+ TextFormField(
+ obscureText: true,
+ keyboardType: TextInputType
+ .emailAddress,
+ controller: controller
+ .passwordController,
+ decoration: InputDecoration(
+ focusedBorder:
+ OutlineInputBorder(
+ borderSide:
+ const BorderSide(
+ color: AppColor
+ .primaryColor,
+ width: 2.0,
+ ),
+ borderRadius:
+ BorderRadius.circular(
+ 10),
+ ),
+ fillColor:
+ AppColor.accentColor,
+ hoverColor:
+ AppColor.accentColor,
+ focusColor:
+ AppColor.accentColor,
+ border: const OutlineInputBorder(
+ borderRadius:
+ BorderRadius.all(
+ Radius.circular(
+ 12))),
+ labelText: 'Password'.tr,
+ hintText:
+ 'Please enter your phone number.'
+ .tr,
+ ),
+ validator: (value) {
+ if (value!.isEmpty) {
+ return 'Please enter Your Password.'
+ .tr;
+ }
+ if (value.length < 6) {
+ return 'Password must br at least 6 character.'
+ .tr;
+ }
+ return null;
+ },
+ ),
+ GetBuilder(
+ builder: (controller) =>
+ controller.isloading
+ ? const MyCircularProgressIndicator()
+ : MyElevatedButton(
+ onPressed: () {
+ if (controller
+ .formKey
+ .currentState!
+ .validate()) {
+ controller
+ .login();
+ }
+ },
+ title:
+ 'Submit'.tr,
+ ),
+ )
+ ],
+ ),
+ ),
+ ),
+ ),
+ const SizedBox(
+ height: 10,
+ ),
+ ],
+ ),
+ )
+ : Container(
+ decoration: AppStyle.boxDecoration1,
+ height: Get.height * .3,
+ width: Get.width * .8,
+ child: Center(
+ child: Text(
+ 'Sign in with Google for easier email and name entry'
+ .tr,
+ textAlign: TextAlign.center,
+ style: AppStyle.title,
+ ),
+ ),
+ ),
+ // MyElevatedButton(
+ // title: 'Sign In by Google'.tr,
+ // onPressed: () async {
+ // await GoogleSignInHelper.signInFromLogin();
+ // },
+ // kolor: AppColor.blueColor,
+ // ),
+ InkWell(
+ onTap: () async {
+ await GoogleSignInHelper.signInFromLogin();
+ },
+ child: Container(
+ padding: const EdgeInsets.symmetric(
+ horizontal: 16, vertical: 10),
+ decoration: BoxDecoration(
+ color: AppColor.redColor,
+ borderRadius: BorderRadius.circular(8),
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ const Icon(
+ FontAwesome.google,
+ color: AppColor.blueColor,
+ ),
+ const SizedBox(width: 8),
+ Text(
+ 'Sign In by Google'.tr,
+ style: const TextStyle(
+ color: Colors.white,
+ fontSize: 16,
+ fontWeight: FontWeight.w500,
+ ),
+ ),
+ ],
),
),
),
- MyElevatedButton(
- title: 'Sign In by Google'.tr,
- onPressed: () async {
- await GoogleSignInHelper.signInFromLogin();
- },
- kolor: AppColor.blueColor,
- ),
+
!Platform.isAndroid
? GestureDetector(
onTap: () async {
diff --git a/lib/views/home/HomePage/trip_monitor/trip_monitor.dart b/lib/views/home/HomePage/trip_monitor/trip_monitor.dart
index 4c86135..a2afcf6 100644
--- a/lib/views/home/HomePage/trip_monitor/trip_monitor.dart
+++ b/lib/views/home/HomePage/trip_monitor/trip_monitor.dart
@@ -36,7 +36,14 @@ class TripMonitor extends StatelessWidget {
markerId: MarkerId('start'.tr),
position: tripMonitorController.parentLocation,
draggable: true,
- icon: tripMonitorController.carIcon,
+ icon: tripMonitorController.tripData['message'][0]['model']
+ .contains('دراجة')
+ ? tripMonitorController.motoIcon
+ : tripMonitorController.tripData['message'][0]['model']
+ ['gender'] ==
+ 'Male'
+ ? tripMonitorController.carIcon
+ : tripMonitorController.ladyIcon,
rotation: tripMonitorController.rotation,
),
},
diff --git a/lib/views/home/map_widget.dart/apply_order_widget.dart b/lib/views/home/map_widget.dart/apply_order_widget.dart
index 22bea19..bb58537 100644
--- a/lib/views/home/map_widget.dart/apply_order_widget.dart
+++ b/lib/views/home/map_widget.dart/apply_order_widget.dart
@@ -10,6 +10,7 @@ import 'package:get/get.dart';
import '../../../constant/box_name.dart';
import '../../../controller/functions/launch.dart';
+import '../../widgets/my_textField.dart';
class ApplyOrderWidget extends StatelessWidget {
const ApplyOrderWidget({super.key});
@@ -184,10 +185,9 @@ class ApplyOrderWidget extends StatelessWidget {
title: 'Select one message'.tr,
titleStyle: AppStyle.title,
content: SizedBox(
+ width: Get.width * .6,
height: Get.height * .5,
- child: Column(
- mainAxisAlignment:
- MainAxisAlignment.spaceEvenly,
+ child: ListView(
children: [
InkWell(
onTap: () {
@@ -216,11 +216,14 @@ class ApplyOrderWidget extends StatelessWidget {
),
),
),
+ const SizedBox(
+ height: 5,
+ ),
InkWell(
onTap: () {
FirebaseMessagesController()
.sendNotificationToAnyWithoutData(
- 'message From passenger',
+ 'message From passenger'.tr,
'My location is correct. You can search for me using the navigation app'
.tr,
controller.driverToken,
@@ -243,12 +246,16 @@ class ApplyOrderWidget extends StatelessWidget {
),
),
),
+ const SizedBox(
+ height: 5,
+ ),
InkWell(
onTap: () {
FirebaseMessagesController()
.sendNotificationToAnyWithoutData(
'message From passenger',
- 'I\'m waiting for you'.tr,
+ 'My location is correct. You can search for me using the navigation app'
+ .tr,
controller.driverToken,
'ding.wav',
);
@@ -268,6 +275,84 @@ class ApplyOrderWidget extends StatelessWidget {
),
),
),
+ const SizedBox(
+ height: 5,
+ ),
+ InkWell(
+ onTap: () {
+ FirebaseMessagesController()
+ .sendNotificationToAnyWithoutData(
+ 'message From passenger',
+ "How much longer will you be?"
+ .tr,
+ controller.driverToken,
+ 'ding.wav',
+ );
+ Get.back();
+ },
+ child: Container(
+ decoration:
+ AppStyle.boxDecoration1,
+ child: Padding(
+ padding:
+ const EdgeInsets.all(
+ 10),
+ child: Text(
+ "How much longer will you be?"
+ .tr,
+ style: AppStyle.title,
+ ),
+ ),
+ ),
+ ),
+ const SizedBox(
+ height: 5,
+ ),
+ SizedBox(
+ width: Get.width * .5,
+ child: Row(
+ mainAxisAlignment:
+ MainAxisAlignment.center,
+ children: [
+ Form(
+ key: controller
+ .messagesFormKey,
+ child: SizedBox(
+ width: Get.width * .4,
+ child: MyTextForm(
+ controller: controller
+ .messageToDriver,
+ label:
+ 'Type Any thing'
+ .tr,
+ hint:
+ 'Type Any thing'
+ .tr,
+ type:
+ TextInputType
+ .name),
+ )),
+ IconButton(
+ onPressed: () {
+ FirebaseMessagesController()
+ .sendNotificationToAnyWithoutData(
+ 'message From passenger',
+ controller
+ .messageToDriver
+ .text,
+ controller
+ .driverToken,
+ 'ding.wav');
+ controller
+ .messageToDriver
+ .clear();
+ Get.back();
+ },
+ icon: const Icon(
+ Icons.send))
+ ],
+ ),
+ )
],
),
));
diff --git a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart
index fa0ddcd..c5ccdab 100644
--- a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart
+++ b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart
@@ -595,7 +595,7 @@ class HeaderDestination extends StatelessWidget {
right: 5,
child: Container(
decoration: AppStyle.boxDecoration1,
- height: Get.height * .1,
+ height: Get.height * .15,
width: Get.width * .8,
child: InkWell(
onTap: () {
@@ -618,7 +618,7 @@ class HeaderDestination extends StatelessWidget {
padding: const EdgeInsets.symmetric(
horizontal: 8, vertical: 2),
child: SizedBox(
- height: Get.height * .06,
+ height: Get.height * .08,
child: ListView(
// crossAxisAlignment: CrossAxisAlignment.start,
//
diff --git a/lib/views/home/map_widget.dart/left_main_menu_icons.dart b/lib/views/home/map_widget.dart/left_main_menu_icons.dart
index 120ba26..ce74cc9 100644
--- a/lib/views/home/map_widget.dart/left_main_menu_icons.dart
+++ b/lib/views/home/map_widget.dart/left_main_menu_icons.dart
@@ -1,10 +1,9 @@
-import 'package:SEFER/main.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
-import '../../../constant/box_name.dart';
+import '../../../constant/char_map.dart';
import '../../../constant/colors.dart';
-import '../../../controller/functions/launch.dart';
+import '../../../constant/credential.dart';
import '../../../controller/functions/tts.dart';
import '../../../controller/home/map_passenger_controller.dart';
@@ -83,23 +82,23 @@ GetBuilder leftMainMenuIcons() {
const SizedBox(
width: 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: () async {
- makePhoneCall('+201023248456');
- },
- icon: const Icon(
- Icons.voice_chat,
- size: 29,
- ),
- ),
- ),
+ // AnimatedContainer(
+ // duration: const Duration(microseconds: 200),
+ // width: controller.widthMapTypeAndTraffic,
+ // decoration: BoxDecoration(
+ // color: AppColor.secondaryColor,
+ // border: Border.all(),
+ // borderRadius: BorderRadius.circular(15)),
+ // child: IconButton(
+ // onPressed: () async {
+ // makePhoneCall('+201023248456');
+ // },
+ // icon: const Icon(
+ // Icons.voice_chat,
+ // size: 29,
+ // ),
+ // ),
+ // ),
// AnimatedContainer(
// duration: const Duration(microseconds: 200),
// width: controller.widthMapTypeAndTraffic,
@@ -120,59 +119,50 @@ GetBuilder leftMainMenuIcons() {
// ),
// ),
// ),
- // AnimatedContainer(
- // duration: const Duration(microseconds: 200),
- // width: controller.widthMapTypeAndTraffic,
- // decoration: BoxDecoration(
- // color: AppColor.secondaryColor,
- // border: Border.all(),
- // borderRadius: BorderRadius.circular(15)),
- // child: IconButton(
- // onPressed: () async {
- // await CRUD().allMethodForAI(
- // 'name,fullName,address,idNumber,cardId,dob',
- // AppLink.uploadEgypt,
- // 'idFront');
- //
- // // await ImageController().choosImage(
- // // 'https://api.sefer.live/sefer/uploadEgypt.php',
- // // 'FrontId');
- // // AC credentials = AC();
- // // String apiKey = AK.payPalSecret;
- // // String convertedStringN = credentials.c(
- // // credentials.c(credentials.c(apiKey, cs), cC), cn);
- //
- // // String retrievedStringS = credentials.r(
- // // credentials.r(credentials.r(convertedStringN, cn), cC),
- // // cs);
- // // //
- // // if (retrievedStringS == apiKey) {
- // // }
- //
- // // await Get.find()
- // // .payWithPayMob(context, '1100', 'EGP');
- // // Initiates a payment with a card using the FlutterPaymob instance
- //
- // // NotificationController()
- // // .showNotification('Order', 'hi this is', 'tone1');
- // // Get.to(() => DriverCallPage());
- // // controller.getKazanPercent();
- // // PassengerCallPage(
- // // channelName: '',
- // // token: '',
- // // remoteID: '',
- // // )
- // // Get.to(() => const CallPage());
- // await Get.find().startRecording();
- // },
- // icon: Icon(
- // Get.put(AudioRecorderController()).isRecording
- // ? Icons.stop
- // : Icons.start,
- // size: 29,
- // ),
- // ),
- // ),
+ AnimatedContainer(
+ duration: const Duration(microseconds: 200),
+ width: controller.widthMapTypeAndTraffic,
+ decoration: BoxDecoration(
+ color: AppColor.secondaryColor,
+ border: Border.all(),
+ borderRadius: BorderRadius.circular(15)),
+ child: IconButton(
+ onPressed: () async {
+ // await CRUD().allMethodForAI(
+ // 'name,fullName,address,idNumber,cardId,dob',
+ // AppLink.uploadEgypt,
+ // 'idFront');
+ //
+ // // await ImageController().choosImage(
+ // // 'https://api.sefer.live/sefer/uploadEgypt.php',
+ // // 'FrontId');
+ AC credentials = AC();
+ String apiKey = 'zjujl_qvo_fwjfgjlXrXlBl';
+ String convertedStringN = credentials.c(
+ credentials.c(credentials.c(apiKey, cs), cC), cn);
+
+ String retrievedStringS = credentials.r(
+ credentials.r(credentials.r(convertedStringN, cn), cC),
+ cs);
+ //
+ if (retrievedStringS == apiKey) {
+ print('convertedStringN --- $convertedStringN');
+ print('retrievedStringS ---$retrievedStringS');
+ print('same');
+ }
+ //
+ // // await Get.find()
+ // // .payWithPayMob(context, '1100', 'EGP');
+ // // Initiates a payment with a card using the FlutterPaymob instance
+ //
+ },
+ icon: const Icon(
+ // Get.put(AudioRecorderController()).isRecording
+ Icons.start,
+ size: 29,
+ ),
+ ),
+ ),
],
);
})),
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
index 73fde98..ef7b785 100644
Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
index 667453c..8360e19 100644
Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
index 8ff4eca..e7bbc83 100644
Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
index 91baaa6..8e1e3d9 100644
Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
index 7f3915e..1dab5d4 100644
Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
index e3dc401..08e31d1 100644
Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
index 2ccdea3..9007c6f 100644
Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ
diff --git a/pubspec.yaml b/pubspec.yaml
index 50b95cb..ebaf09d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -29,7 +29,7 @@ dependencies:
geolocator: ^10.0.0
flutter_paypal: ^0.2.0
google_fonts: ^4.0.4
- flutter_launcher_icons: #^0.13.1
+ flutter_launcher_icons: ^0.13.1
flutter_rating_bar: ^4.0.1
flutter_font_icons: ^2.2.5
image_picker: ^1.0.4
diff --git a/web/favicon.png b/web/favicon.png
index 8ff4eca..e7bbc83 100644
Binary files a/web/favicon.png and b/web/favicon.png differ
diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png
index 117b646..084f2e5 100644
Binary files a/web/icons/Icon-192.png and b/web/icons/Icon-192.png differ
diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png
index e3dc401..08e31d1 100644
Binary files a/web/icons/Icon-512.png and b/web/icons/Icon-512.png differ
diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png
index 117b646..084f2e5 100644
Binary files a/web/icons/Icon-maskable-192.png and b/web/icons/Icon-maskable-192.png differ
diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png
index e3dc401..08e31d1 100644
Binary files a/web/icons/Icon-maskable-512.png and b/web/icons/Icon-maskable-512.png differ
diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico
index 54228f6..a89238a 100644
Binary files a/windows/runner/resources/app_icon.ico and b/windows/runner/resources/app_icon.ico differ