diff --git a/.env b/.env
index d252c67..07042e8 100644
--- a/.env
+++ b/.env
@@ -1,4 +1,6 @@
basicAuthCredentials=wqnmqqsjyvwv:nqrYJP@1737XrXlBl
+basicCompareFaces=zjujluqfj:nqrYjp@1737XrXlBl
+basicCompareFacesURL='https://face-detect-f6924392c4c7.herokuapp.com/compare_faces'
accountSIDTwillo=QFx0qy456juj3839xuy2194q629q1fj0y7XrXlBl
serverAPI=QQQQobSrrFi:QVQ87xU7zwCvmZzZdaxuS2f23Y4mz7MzyOzr8od2br6KYyeFaTVLG3K3hx5ZaUyx7eYvAYpAVdKk-286NTRi3zs9iSOnXtXRIxswg3KecBmsl3VxJ9wO-vIpwu4Pv7dkHkXniuxMSDgWXrXlBl
mapAPIKEY=QOmqZsFsutLDCtZCRIUAZAkB5v6AMkKEPMbJGa3XrXlBl
@@ -12,7 +14,7 @@ chatGPTkeySeferNew=zg-Z4AJcAROgNXjgrEIU8fKC9XrxgUE4Qtrrlq1yiux0jL3dITSXrXlBl
secretKey=zg_ropj_57Iiv6MFCBFq3C2n6IXlmjykpxDmW93SW3vvXh68UA9T5FORTWgWsT37StKsOPdwDdsy8qR9srMUluahs3nPHvgBa33tGk90vV5XrXlBl
stripe_publishableKe=vg_ropj_57Iiv6MFCBFq3C2n6kNJnZByV6nuDtXe9IjEPOfhmpDtWmt3MLR0gQpiHcQmAFMUPrZc3QiCDjxBZLbxDC3efxWxz33bWH1ZgrsXrXlBl
llamaKey=RR-EuyoFDUvfRDBj46fZKAtKJ3voM8Mt768cPeJV7GNdAkPTKdY8Odm9n4ggGqI5GyoXrXlBl
-serverPHP=https://api.sefer.live/sefer/
+serverPHP=https://api.sefer.live/sefer
cohere=Aulwd8y5SPWos0hJhG0toUf8gOhUUrpf5Q2TPmVGXrXlBl
claudeAiAPI=zg-qbc-qvo39-xWOxIGwWTOzCFBnIYSKKhfyz_KVAvrH-6_4ZEJL68G_QBH26oeTOMMoQug9KuOjjKSP_A4S3SUDlbxR9duVzoQ-MkX_UQQQXrXlBl
payPalClientId=QALymfNI5Tzt4s-ysoz6vD4_nqX0SUtkC_qYV-Ugk5gaM_8Z-kg4L53k8Uux_4jEWXDkNpXGSWPpIzDFXrXlBl
@@ -25,10 +27,15 @@ agoraAppId=71880f2j636509j24y5294480y30u848XrXlBl
agoraAppCertificate=j17q944u49390q758u1649448q2y6xfuXrXlBl
usernamePayMob=37319104052XrXlBl
passwordPayMob='g@nkD2#99!hD_.wXrXlBl'
-integrationIdPayMob=0552355XrXlBl
+integrationIdPayMob=0237730XrXlBl
payMobApikey='MDrGqKEWS1rVqHvEPDvPjJ7vZDBExrO7S3BEBgrlfUwTA3i5RnP5ZnvoL3M2S9rEBgrlNTdexH5pTPf7NJrvy1reZJv1Tn7zf7vTIDywjHg1C7Ley38HTDyNA3v7TPfdxJrax1rwPmPtMJyzqKEYZeghq3MuLUrFH3A1AgHcH15CZ9UaZTLOxnw0BTdzHHrBArisZerUMUUzZ1BnBeEijHvNjYLnS1BUICMhSmPhA15ifHyVqKEMHWyKLbyuIPvcH9UeL3vZyDf=XrXlBl'
-integrationIdPayMobWallet=0552352XrXlBl
+integrationIdPayMobWallet=0237739XrXlBl
ocpApimSubscriptionKey=17373j50x53u07q0830634f512j731yuXrXlBl
smsPasswordEgypt="J)Vh=qb/@MXrXlBl"
chatGPTkeySeferNew4=zg-vlie-2l1ZlpxiLJ6wQOvbb4TnC9XrxgUEyVQIu6TID4qP4FUUqoS5XrXlBl
anthropicAIkeySeferNew=zg-qbc-qvo39-n4VdMQ5nuJeIYhMN4PDYr7qox3-t2i1Lh7aNTDfYF-Gf8whUJZCs47EeelKn8_UcmUMmiSLaf0UJg0DvUlQrDt-76CRrkQQXrXlBl
+llama3Key=kzg_uTXy3e9DBbCQ1FnMGxYwTKysx9US1burxJj4fFwOje4LZBUFKJS1XrXlBl
+payMobOutClientSecrret='wcP2bUQBRYy254hjCJhNlOatefDzifNDnXRQSiu6UhhcXfZdyCyiBaUr9JQpI2mlIkKVRyoNliuBv1P8QZPLveiZrUeYBLmS6wuVhbQEJku1B5MHhgbB0AboqaOMpqBcXrXlBl'
+payMobOutClient_id='gnBTH5kGzR4RGPwzEUxIKCJx9SA5zAwpXiX4vaiTXrXlBl'
+payMobOutPassword='#f9vZtxHdIGvAbl5wWMQkvgZTXrXlBl'
+payMobOutUserName='zjujl_qvo_fwjfgjlXrXlBl'
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 783155d..a24c25d 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 flutter.targetSdkVersion
- versionCode 37
- versionName '1.5.37'
+ versionCode 40
+ versionName '1.5.40'
// manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml']
}
diff --git a/android/gradle.properties b/android/gradle.properties
index 94adc3a..4de64f2 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,3 +1,3 @@
-org.gradle.jvmargs=-Xmx1536M
+org.gradle.jvmargs=-Xmx4096M
android.useAndroidX=true
android.enableJetifier=true
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 2976c8f..df44879 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -41,7 +41,7 @@
CFBundleSignature
????
CFBundleVersion
- 36
+ 4.3.6
FirebaseAppDelegateProxyEnabled
NO
GMSApiKey
diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements
index 903def2..80b5221 100644
--- a/ios/Runner/Runner.entitlements
+++ b/ios/Runner/Runner.entitlements
@@ -4,5 +4,9 @@
aps-environment
development
+ com.apple.developer.applesignin
+
+ Default
+
diff --git a/lib/constant/style.dart b/lib/constant/style.dart
index 8b4f0e2..9d13b27 100644
--- a/lib/constant/style.dart
+++ b/lib/constant/style.dart
@@ -10,28 +10,29 @@ class AppStyle {
fontSize: 40,
color: AppColor.accentColor,
fontFamily: box.read(BoxName.lang) == 'ar'
- ? 'mohanad'
+ // ?GoogleFonts.notoNaskhArabic().fontFamily
+ ? GoogleFonts.notoNaskhArabic().fontFamily
: GoogleFonts.roboto().fontFamily);
static TextStyle headTitle2 = TextStyle(
fontWeight: FontWeight.bold,
fontSize: 26,
color: AppColor.writeColor,
fontFamily: box.read(BoxName.lang) == 'ar'
- ? 'mohanad'
+ ? GoogleFonts.notoNaskhArabic().fontFamily
: GoogleFonts.roboto().fontFamily);
static TextStyle title = TextStyle(
fontWeight: FontWeight.normal,
fontSize: box.read(BoxName.lang) == 'ar' ? 14 : 16,
color: AppColor.writeColor,
fontFamily: box.read(BoxName.lang) == 'ar'
- ? 'mohanad'
+ ? GoogleFonts.notoNaskhArabic().fontFamily
: GoogleFonts.roboto().fontFamily);
static TextStyle subtitle = TextStyle(
fontWeight: FontWeight.bold,
fontSize: 13,
color: AppColor.writeColor,
fontFamily: box.read(BoxName.lang) == 'ar'
- ? 'mohanad'
+ ? GoogleFonts.notoNaskhArabic().fontFamily
: GoogleFonts.roboto().fontFamily);
static TextStyle number = const TextStyle(
fontWeight: FontWeight.bold,
@@ -53,9 +54,13 @@ class AppStyle {
static BoxDecoration boxDecoration1 = const BoxDecoration(
boxShadow: [
BoxShadow(
- color: AppColor.accentColor, blurRadius: 5, offset: Offset(2, 4)),
+ color: Color.fromARGB(255, 237, 230, 230),
+ blurRadius: 5,
+ offset: Offset(2, 4)),
BoxShadow(
- color: AppColor.accentColor, blurRadius: 5, offset: Offset(-2, -2))
+ color: Color.fromARGB(255, 242, 237, 237),
+ blurRadius: 5,
+ offset: Offset(-2, -2))
],
color: AppColor.secondaryColor,
borderRadius: BorderRadius.all(
diff --git a/lib/controller/auth/apple_signin_controller.dart b/lib/controller/auth/apple_signin_controller.dart
index a624cae..3e02d63 100644
--- a/lib/controller/auth/apple_signin_controller.dart
+++ b/lib/controller/auth/apple_signin_controller.dart
@@ -7,28 +7,40 @@ class AuthController extends GetxController {
Future signInWithApple() async {
try {
+ print('Starting Apple Sign In process');
+
final appleCredential = await SignInWithApple.getAppleIDCredential(
scopes: [
AppleIDAuthorizationScopes.email,
AppleIDAuthorizationScopes.fullName,
],
);
+ print('Apple ID Credential obtained');
final oAuthProvider = OAuthProvider('apple.com');
final credential = oAuthProvider.credential(
idToken: appleCredential.identityToken,
accessToken: appleCredential.authorizationCode,
);
+ print('OAuth credential created');
UserCredential userCredential =
await _auth.signInWithCredential(credential);
+ print('User signed in successfully: ${userCredential.user?.uid}');
+
return userCredential.user;
} catch (error) {
+ print('Error during Apple Sign In: $error');
return null;
}
}
- void signOut() async {
- await _auth.signOut();
+ Future signOut() async {
+ try {
+ await _auth.signOut();
+ print('User signed out successfully');
+ } catch (error) {
+ print('Error during sign out: $error');
+ }
}
}
diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart
index ec478e7..d06d422 100644
--- a/lib/controller/auth/login_controller.dart
+++ b/lib/controller/auth/login_controller.dart
@@ -4,7 +4,6 @@ import 'dart:math';
import 'package:SEFER/controller/firebase/firbase_messge.dart';
import 'package:SEFER/views/auth/sms_verfy_page.dart';
import 'package:flutter/material.dart';
-import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:get/get.dart';
import 'package:SEFER/constant/box_name.dart';
import 'package:SEFER/constant/links.dart';
@@ -25,7 +24,6 @@ class LoginController extends GetxController {
TextEditingController adminNameController = TextEditingController();
bool isAgreeTerms = false;
bool isloading = false;
- final FlutterSecureStorage _storage = const FlutterSecureStorage();
void changeAgreeTerm() {
isAgreeTerms = !isAgreeTerms;
@@ -74,8 +72,8 @@ class LoginController extends GetxController {
box.read(BoxName.tokenFCM)) {
Get.put(FirebaseMessagesController())
.sendNotificationToAnyWithoutData(
- 'token change',
- 'change device',
+ 'token change'.tr,
+ 'change device'.tr,
jsonDecode(token)['data'][0]['token'].toString(),
);
Future.delayed(const Duration(seconds: 1));
@@ -83,10 +81,20 @@ class LoginController extends GetxController {
'token': box.read(BoxName.tokenFCM),
'passengerID': box.read(BoxName.passengerID).toString()
});
- Get.offAll(() => const MapPagePassenger());
+ Get.defaultDialog(
+ title: 'Device Change Detected'.tr,
+ middleText:
+ 'You can only use one device at a time. This device will now be set as your active device.'
+ .tr,
+ textConfirm: 'OK'.tr,
+ confirmTextColor: Colors.white,
+ onConfirm: () {
+ Get.back();
+ Get.offAll(() => const MapPagePassenger());
+ },
+ );
}
}
-
Get.offAll(() => const MapPagePassenger());
} else {
Get.offAll(() => SmsSignupEgypt());
diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart
index 833ec3e..d28c29c 100644
--- a/lib/controller/auth/register_controller.dart
+++ b/lib/controller/auth/register_controller.dart
@@ -1,3 +1,4 @@
+import 'dart:async';
import 'dart:convert';
import 'dart:math';
@@ -27,10 +28,10 @@ class RegisterController extends GetxController {
TextEditingController siteController = TextEditingController();
TextEditingController verfyCode = TextEditingController();
TextEditingController verifyCode = TextEditingController();
-
+ int remainingTime = 300; // 5 minutes in seconds
bool isSent = false;
bool isLoading = false;
-
+ Timer? _timer;
String birthDate = 'Birth Date'.tr;
String gender = 'Male'.tr;
@override
@@ -38,6 +39,17 @@ class RegisterController extends GetxController {
super.onInit();
}
+ void startTimer() {
+ _timer?.cancel(); // Cancel any existing timer
+ _timer = Timer.periodic(const Duration(seconds: 1), (timer) {
+ if (remainingTime > 0) {
+ remainingTime--;
+ } else {
+ timer.cancel();
+ }
+ });
+ }
+
getBirthDate() {
Get.defaultDialog(
title: 'Select Date'.tr,
@@ -84,6 +96,8 @@ class RegisterController extends GetxController {
await smsEgyptController.sendSmsEgypt(
phoneController.text.toString(), randomNumber.toString());
isSent = true;
+ remainingTime = 300; // Reset to 5 minutes
+ startTimer();
isLoading = false;
update();
}
@@ -159,4 +173,10 @@ class RegisterController extends GetxController {
}
}
}
+
+ @override
+ void onClose() {
+ _timer?.cancel();
+ super.onClose();
+ }
}
diff --git a/lib/controller/home/home_page_controller.dart b/lib/controller/home/home_page_controller.dart
new file mode 100644
index 0000000..21edec3
--- /dev/null
+++ b/lib/controller/home/home_page_controller.dart
@@ -0,0 +1,15 @@
+import 'package:get/get.dart';
+
+import '../../constant/box_name.dart';
+import '../../main.dart';
+
+class HomePageController extends GetxController {
+ late bool isVibrate = true;
+
+ void changeVibrateOption(bool value) {
+ isVibrate = box.read(BoxName.isvibrate) ?? true;
+ isVibrate = value;
+ box.write(BoxName.isvibrate, value);
+ update();
+ }
+}
diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart
index 9767ac5..26ebec3 100644
--- a/lib/controller/home/map_passenger_controller.dart
+++ b/lib/controller/home/map_passenger_controller.dart
@@ -110,6 +110,7 @@ class MapPassengerController extends GetxController {
bool isDriverInPassengerWay = false;
bool isDriverArrivePassenger = false;
bool startLocationFromMap = false;
+ bool isAnotherOreder = false;
bool passengerStartLocationFromMap = false;
bool workLocationFromMap = false;
bool homeLocationFromMap = false;
@@ -466,6 +467,11 @@ class MapPassengerController extends GetxController {
update();
}
+ void changeisAnotherOreder(bool val) {
+ isAnotherOreder = val;
+ update();
+ }
+
void sendSMS(String to) async {
// Get the driver's phone number.
String driverPhone =
@@ -502,7 +508,7 @@ class MapPassengerController extends GetxController {
void getDrawerMenu() {
heightMenuBool = !heightMenuBool;
widthMapTypeAndTraffic = heightMenuBool == true ? 0 : 50;
- heightMenu = heightMenuBool == true ? 100 : 0;
+ heightMenu = heightMenuBool == true ? 70 : 0;
widthMenu = heightMenuBool == true ? 110 : 0;
update();
}
diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart
index a5bc2fe..534f27c 100644
--- a/lib/controller/local/translations.dart
+++ b/lib/controller/local/translations.dart
@@ -4,6 +4,25 @@ class MyTranslation extends Translations {
@override
Map> get keys => {
"ar": {
+ "Pick from map destination": "حدد وجهتك على الخريطة",
+ "Pick or Tap to confirm": "حدد أو انقر للتأكيد",
+ "Select Order Type": "حدد نوع الطلب",
+ "Choose who this order is for": "اختر لمن هذا الطلب",
+ "I want to order for myself": "أريد أن أطلب لنفسي",
+ "I want to order for someone else": "أريد أن أطلب لشخص آخر",
+
+ "If you want order to another person": "إذا كنت تريد الطلب لشخص آخر",
+ "Wehaven'tfoundanydriversyet.Considerincreasingyourtripfeetomakeyouroffermoreattractivetodrivers.":
+ "لم نجد أي سائقين بعد. ضع في اعتبارك زيادة رسوم رحلتك لجعل عرضك أكثر جاذبية للسائقين.",
+ "IncreaseYourTripFee(Optional)": "زيادة رسوم رحلتك (اختياري)",
+ 'Vibration': "اهتزاز",
+ 'Resend code': "إعادة إرسال الرمز",
+ "Sign in with Apple": "تسجيل الدخول باستخدام Apple",
+ "token change": "تغيير الرمز",
+ "change device": "تغيير الجهاز",
+ "Device Change Detected": "تم اكتشاف تغيير الجهاز",
+ "You can only use one device at a time. This device will now be set as your active device.":
+ "يمكنك استخدام جهاز واحد في المرة الواحدة. سيتم الآن تعيين هذا الجهاز كجهازك النشط.",
"Click here point": "انقر هنا", // Click here (literal translation)
"Pick or Tap to confirm":
"اختر أو اضغط للتأكيد", // Choose or Tap to confirm
@@ -196,42 +215,39 @@ iOS [https://getapp.cc/app/6458734951]
'Get to your destination quickly and easily.':
'وصول إلى وجهتك بسرعة وسهولة.',
'Enjoy a safe and comfortable ride.': 'استمتع برحلة آمنة ومريحة.',
- "Choose Language": "اخْتَر اللُّغَة",
- "Login": "تَسْجِيل الدُّخُول",
- "Pay with Wallet": 'ادْفَع بِاسْتِخْدَام المَحْفَظَة',
- "Invalid MPIN": 'رَمْز PIN غَيْر صَحِيح',
- "Invalid OTP": 'كود التَّحَقُّق خَاطِئ',
- "Enter your email address":
- "أدْخِل عُنْوَان بَرِيدِكَ الإلِكْتْرُونِي",
- "Please enter Your Email.":
- "يَرْجَى إِدْخَال بَرِيدِكَ الإلِكْتْرُونِي.",
- "Enter your phone number": "أدْخِل رَقْم هَاتِفِكَ",
- "Please enter your phone number.":
- "يَرْجَى إِدْخَال رَقْم هَاتِفِكَ.",
- "Please enter Your Password.": "يَرْجَى إِدْخَال كَلِمَة المُرُور.",
- "Submit": "إرْسَال",
- "if you dont have account": "إِذَا لَمْ يَكُن لَدَيْكَ حِسَاب",
- "Register": "تَسْجِيل",
+ "Choose Language": "اختر اللغة",
+ "Login": "تسجيل الدخول",
+ "Pay with Wallet": "ادفع باستخدام المحفظة",
+ "Invalid MPIN": "رمز PIN غير صحيح",
+ "Invalid OTP": "كود التحقق خاطئ",
+ "Enter your email address": "أدخل عنوان بريدك الإلكتروني",
+ "Please enter Your Email.": "يرجى إدخال بريدك الإلكتروني.",
+ "Enter your phone number": "أدخل رقم هاتفك",
+ "Please enter your phone number.": "يرجى إدخال رقم هاتفك.",
+ "Please enter Your Password.": "يرجى إدخال كلمة المرور.",
+ "Submit": "إرسال",
+ "if you dont have account": "إذا لم يكن لديك حساب",
+ "Register": "تسجيل",
"Accept Ride's Terms & Review Privacy Notice":
- "قَبُول شُرُوط الاسْتِخْدَام وَمُرَاجَعَة إِشْعَار الخُصُوصِيَّة",
+ "قبول شروط الاستخدام ومراجعة إشعار الخصوصية",
"By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.":
- "مِنْ خِلَال اخْتِيَار 'أُوَافِق' أَدْنَاهُ، قُمْتُ بِمُرَاجَعَة وَقَبُول شُرُوط الاسْتِخْدَام وَأُقِرُّ بِإِشْعَار الخُصُوصِيَّة. أَنَا عَلَى الأَقَل 18 عَامًا.",
- "I Agree": "أُوَافِق",
- "First name": "الاسْم الأَوَّل",
- "Enter your first name": "أدْخِل اسْمَكَ الأَوَّل",
- "Please enter your first name.": "يَرْجَى إِدْخَال اسْمِكَ الأَوَّل.",
- "Last name": "اسْم العَائِلَة",
- "Enter your last name": "أدْخِل اسْمَكَ الأَخِير",
- "Please enter your last name.": "يَرْجَى إِدْخَال اسْمِكَ الأَخِير.",
- "City": "المَدِينَة",
- "Please enter your City.": "يَرْجَى إِدْخَال اسْم مَدِينَتِكَ.",
- "Male": "ذَكَر",
- "Female": "أُنْثَى",
- "Verify Email": "تَحَقَّق مِنْ البَرِيد الإلِكْتْرُونِي",
+ "من خلال اختيار 'أوافق' أدناه، قمت بمراجعة وقبول شروط الاستخدام وأقر بإشعار الخصوصية. أنا على الأقل 18 عامًا.",
+ "I Agree": "أوافق",
+ "First name": "الاسم الأول",
+ "Enter your first name": "أدخل اسمك الأول",
+ "Please enter your first name.": "يرجى إدخال اسمك الأول.",
+ "Last name": "اسم العائلة",
+ "Enter your last name": "أدخل اسمك الأخير",
+ "Please enter your last name.": "يرجى إدخال اسمك الأخير.",
+ "City": "المدينة",
+ "Please enter your City.": "يرجى إدخال اسم مدينتك.",
+ "Male": "ذكر",
+ "Female": "أنثى",
+ "Verify Email": "تحقق من البريد الإلكتروني",
"We sent 5 digit to your Email provided":
- "لَقَدْ أَرْسَلْنَا رَمْزًا مُؤَلَّفًا مِنْ 5 أَرْقَام إِلَى بَرِيدِكَ الإلِكْتْرُونِي المُدْخَل",
- "5 digit": "5 أَرْقَام",
- "Send Verification Code": "إرْسَال رَمْز التَّحَقُّق",
+ "لقد أرسلنا رمزًا مؤلفًا من 5 أرقام إلى بريدك الإلكتروني المدخل",
+ "5 digit": "5 أرقام",
+ "Send Verification Code": "إرسال رمز التحقق",
"Your Ride Duration is ": "مُدَّة رِحْلَتِكَ ",
"You will be thier in": "سَتَكُون هُنَاكَ فِي",
"You trip distance is": "مَسَافَة الرِّحْلَة",
@@ -664,12 +680,12 @@ iOS [https://getapp.cc/app/6458734951]
"Yes": 'نَعَمْ',
"Insert Emergincy Number": "أَدْخِلِ رَقْمَ الطَّوَارِئِ",
"Best choice for comfort car and flexible route and stops point":
- 'أَفْضَلُ خِيَارٍ لِسَيَّارَةِ رَاحَةٍ وَمَسَارٍ مُرِنٍ وَنِقَاطِ تَوَقُّفٍ',
+ "رحلة مكيفة ومسار متغير لرغبة العميل ونقاط توقف",
"Insert": "إِدْرَاجُ",
"This is for delivery or a motorcycle.":
"هَذَا لِلتَّسْلِيمِ أَوِ الدَّرَّاجَةِ النَّارِيَّةِ",
"This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route":
- 'الرِّحْلَةُ دِي مِنْ نُقْطَةِ الْبِدَايَةِ لِنُقْطَةِ النِّهَايَةِ بِسِعْرٍ ثَابِتٍ وَالسَّوَّاقُ لَازِمٌ يَمْشِي بِنَفْسِ الطَّرِيقِ.',
+ 'رحلة محددة السعر والشريك السائق ملتزم بالمسار المحدد من خلال التطبيق',
"You can decline a request without any cost":
"يمكنك إلغاء الطلب بدون أي تكلفة",
"Perfect for adventure seekers who want to experience something new and exciting":
diff --git a/lib/views/auth/login_page.dart b/lib/views/auth/login_page.dart
index 78f1736..969c05d 100644
--- a/lib/views/auth/login_page.dart
+++ b/lib/views/auth/login_page.dart
@@ -1,8 +1,5 @@
-import 'dart:convert';
import 'dart:io';
-import 'package:SEFER/views/auth/sms_verfy_page.dart';
-import 'package:animated_text_kit/animated_text_kit.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
@@ -16,16 +13,10 @@ import 'package:SEFER/views/widgets/elevated_btn.dart';
import 'package:SEFER/views/widgets/my_scafold.dart';
import '../../constant/info.dart';
-import '../../constant/links.dart';
import '../../controller/auth/apple_signin_controller.dart';
import '../../controller/auth/google_sign.dart';
import '../../controller/auth/login_controller.dart';
-import '../../controller/firebase/firbase_messge.dart';
-import '../../controller/functions/crud.dart';
-import '../../controller/functions/toast.dart';
import '../home/profile/passenger_profile_page.dart';
-import '../widgets/mycircular.dart';
-import 'register_page.dart';
class LoginPage extends StatelessWidget {
final controller = Get.put(LoginController());
@@ -88,53 +79,45 @@ class LoginPage extends StatelessWidget {
kolor: AppColor.blueColor,
),
!Platform.isAndroid
- ? Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- const Icon(
- Icons.apple,
- size: 30,
+ ? GestureDetector(
+ onTap: () async {
+ User? user =
+ await authController.signInWithApple();
+ if (user != null) {
+ box.write(BoxName.passengerID, user.uid);
+ box.write(BoxName.email, user.email);
+ await GoogleSignInHelper
+ .signInFromLogin();
+ // Navigate to another screen or perform other actions
+ } else {}
+ },
+ child: Container(
+ padding: const EdgeInsets.symmetric(
+ horizontal: 16, vertical: 10),
+ decoration: BoxDecoration(
+ color: Colors.black,
+ borderRadius: BorderRadius.circular(8),
),
- const SizedBox(
- width: 8), // Adjust spacing as needed
- MyElevatedButton(
- title: 'Sign in with Apple'.tr,
- onPressed: () async {
- try {
- User? user = await authController
- .signInWithApple();
- if (user != null) {
- box.write(
- BoxName.driverID, user.uid);
- box.write(BoxName.emailDriver,
- user.email);
-
- // Provide user feedback
- await GoogleSignInHelper
- .signInFromLogin();
- Navigator.of(context)
- .pushReplacementNamed('/home');
- Toast.show(
- context,
- 'Signed in successfully',
- AppColor.greenColor);
- } else {
- Toast.show(
- context,
- 'Sign in failed. Please try again.',
- AppColor.yellowColor);
- }
- } catch (error) {
- print('Sign in error: $error');
- Toast.show(
- context,
- 'An error occurred. Please check your connection and try again.',
- AppColor.redColor);
- }
- },
- kolor: Colors.black,
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ const Icon(
+ Icons.apple,
+ color: Colors.white,
+ size: 24,
+ ),
+ const SizedBox(width: 8),
+ Text(
+ 'Sign in with Apple'.tr,
+ style: const TextStyle(
+ color: Colors.white,
+ fontSize: 16,
+ fontWeight: FontWeight.w500,
+ ),
+ ),
+ ],
),
- ],
+ ),
)
: const SizedBox(),
],
diff --git a/lib/views/auth/sms_verfy_page.dart b/lib/views/auth/sms_verfy_page.dart
index 9ab9661..015108e 100644
--- a/lib/views/auth/sms_verfy_page.dart
+++ b/lib/views/auth/sms_verfy_page.dart
@@ -73,6 +73,40 @@ class SmsSignupEgypt extends StatelessWidget {
const SizedBox(
height: 10,
),
+ if (registerController.isSent)
+ Obx(() => Column(
+ children: [
+ Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 16.0),
+ child: registerController.remainingTime > 0
+ ? Column(
+ children: [
+ Text(
+ '${(registerController.remainingTime / 60).floor()}:${(registerController.remainingTime % 60).toString().padLeft(2, '0')} remaining',
+ style: AppStyle.subtitle,
+ textAlign: TextAlign.center,
+ ),
+ const SizedBox(height: 8),
+ LinearProgressIndicator(
+ value: registerController.remainingTime /
+ 300, // Assuming 300 seconds (5 minutes) total
+ backgroundColor: Colors.grey[300],
+ valueColor: AlwaysStoppedAnimation(
+ Theme.of(context).primaryColor),
+ ),
+ ],
+ )
+ : TextButton(
+ onPressed: () =>
+ registerController.sendOtpMessage(),
+ child: Text('Resend code'.tr),
+ ),
+ ),
+ const SizedBox(
+ height:
+ 16), // Add some space after the timer or button
+ ],
+ )),
Padding(
padding: const EdgeInsets.all(16.0),
child: registerController.isSent
diff --git a/lib/views/home/home_page.dart b/lib/views/home/home_page.dart
index f611288..b2c1fea 100644
--- a/lib/views/home/home_page.dart
+++ b/lib/views/home/home_page.dart
@@ -1,4 +1,5 @@
import 'package:SEFER/controller/functions/tts.dart';
+import 'package:SEFER/controller/home/home_page_controller.dart';
import 'package:SEFER/views/widgets/elevated_btn.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -19,6 +20,7 @@ class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
+ Get.put(HomePageController());
return MyScafolld(
isleading: true,
title: 'Home Page'.tr,
@@ -74,6 +76,25 @@ class HomePage extends StatelessWidget {
),
onTap: () => Get.to(() => const FrequentlyQuestionsPage()),
),
+ ListTile(
+ leading: const Icon(Icons.vibration),
+ title: GetBuilder(builder: (controller) {
+ return SwitchListTile(
+ title: Text(
+ 'Vibration'.tr,
+ style: AppStyle.headTitle2,
+ ),
+ value: controller.isVibrate,
+ onChanged: controller.changeVibrateOption,
+ activeColor: AppColor.primaryColor,
+ );
+ }),
+ subtitle: Text(
+ 'You can change the Vibration for all butttons'.tr,
+ style: AppStyle.title,
+ ),
+ onTap: () => Get.to(() => const FrequentlyQuestionsPage()),
+ ),
ListTile(
leading: const Icon(Icons.record_voice_over_outlined),
title: Text(
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 8e79cc9..31859d7 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
@@ -615,9 +615,13 @@ class HeaderDestination extends StatelessWidget {
'🟢 ',
style: AppStyle.subtitle,
),
- Text(
- mapPassengerController.startNameAddress,
- style: AppStyle.subtitle,
+ SizedBox(
+ height: Get.height * .06,
+ width: Get.width * .8,
+ child: Text(
+ mapPassengerController.startNameAddress,
+ style: AppStyle.subtitle,
+ ),
),
],
),
@@ -629,9 +633,13 @@ class HeaderDestination extends StatelessWidget {
'🔴 ',
style: AppStyle.subtitle,
),
- Text(
- mapPassengerController.endNameAddress,
- style: AppStyle.subtitle,
+ SizedBox(
+ height: Get.height * .06,
+ width: Get.width * .8,
+ child: Text(
+ mapPassengerController.endNameAddress,
+ style: AppStyle.subtitle,
+ ),
),
],
),
diff --git a/lib/views/home/map_widget.dart/form_search_places_destenation.dart b/lib/views/home/map_widget.dart/form_search_places_destenation.dart
index 927bca7..e8a7fbe 100644
--- a/lib/views/home/map_widget.dart/form_search_places_destenation.dart
+++ b/lib/views/home/map_widget.dart/form_search_places_destenation.dart
@@ -71,7 +71,8 @@ GetBuilder formSearchPlacesDestenation() {
height: 10,
),
Container(
- decoration: AppStyle.boxDecoration1,
+ decoration: AppStyle.boxDecoration1
+ .copyWith(color: AppColor.blueColor),
child: InkWell(
onTap: () {
controller.changeMainBottomMenuMap();
@@ -81,8 +82,11 @@ GetBuilder formSearchPlacesDestenation() {
padding: const EdgeInsets.symmetric(
horizontal: 20, vertical: 4),
child: Text(
- 'Pick from map'.tr,
- style: AppStyle.headTitle2,
+ controller.isAnotherOreder
+ ? 'Pick from map destination'.tr
+ : 'Pick from map'.tr,
+ style: AppStyle.title
+ .copyWith(color: AppColor.secondaryColor),
),
),
)),
@@ -144,13 +148,14 @@ GetBuilder formSearchPlacesDestenation() {
child: Container(
width: Get.width * .25,
decoration: BoxDecoration(
- color: AppColor.greenColor.withOpacity(.4),
+ color: AppColor.blueColor.withOpacity(.4),
border: Border.all()),
child: Text(
' ${box.read(BoxName.addWork)}' == 'addWork'
? 'Add Work'.tr
- : 'Work'.tr,
+ : 'To Work'.tr,
textAlign: TextAlign.center,
+ style: AppStyle.title,
),
),
),
@@ -208,11 +213,12 @@ GetBuilder formSearchPlacesDestenation() {
child: Container(
width: Get.width * .25,
decoration: BoxDecoration(
- color: AppColor.yellowColor.withOpacity(.4),
+ color: AppColor.blueColor.withOpacity(.4),
border: Border.all()),
child: Text(
+ style: AppStyle.title,
textAlign: TextAlign.center,
- '${box.read(BoxName.addHome) == 'addHome' ? 'Add Home' : 'Home'} '),
+ '${box.read(BoxName.addHome) == 'addHome' ? 'Add Home'.tr : "To Home".tr} '),
),
),
],
diff --git a/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart b/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart
index ddff40b..211e062 100644
--- a/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart
+++ b/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart
@@ -1,3 +1,4 @@
+import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:SEFER/constant/box_name.dart';
@@ -12,6 +13,7 @@ import '../../../constant/colors.dart';
import '../../../constant/table_names.dart';
import '../../../controller/functions/toast.dart';
import '../../../controller/functions/tts.dart';
+import 'form_search_start.dart';
class MainBottomMenuMap extends StatelessWidget {
const MainBottomMenuMap({super.key});
@@ -43,9 +45,28 @@ class MainBottomMenuMap extends StatelessWidget {
child: Container(
width: Get.width * .8,
height: Get.height * .1,
- decoration: AppStyle.boxDecoration1,
+ decoration: const BoxDecoration(
+ boxShadow: [
+ BoxShadow(
+ color: Color.fromARGB(
+ 255, 237, 230, 230),
+ blurRadius: 5,
+ offset: Offset(2, 4)),
+ BoxShadow(
+ color: Color.fromARGB(
+ 255, 242, 237, 237),
+ blurRadius: 5,
+ offset: Offset(-2, -2))
+ ],
+ color: AppColor.blueColor,
+ borderRadius: BorderRadius.all(
+ Radius.elliptical(15, 30),
+ ),
+ ),
+ // decoration: AppStyle.boxDecoration1,
child: DefaultTextStyle(
- style: AppStyle.title,
+ style: AppStyle.title.copyWith(
+ color: AppColor.secondaryColor),
child: Center(
child: controller.isPickerShown
? clickPointPosition(
@@ -62,6 +83,7 @@ class MainBottomMenuMap extends StatelessWidget {
icon: controller.isMainBottomMenuMap
? const Icon(
Icons.ads_click,
+ color: AppColor.secondaryColor,
size: 35,
)
: const Icon(
@@ -88,10 +110,9 @@ class MainBottomMenuMap extends StatelessWidget {
? const SizedBox()
: Column(
children: [
- // controller.currentLocationToFormPlaces
- // ? const SizedBox()
- // :
- // formSearchPlacesStart(),
+ !controller.isAnotherOreder
+ ? const SizedBox()
+ : formSearchPlacesStart(),
formSearchPlacesDestenation(),
const SizedBox(
height: 10,
@@ -117,16 +138,81 @@ class MainBottomMenuMap extends StatelessWidget {
// controller.showBottomSheet1();
// }),
//todo If you want add stop click here
- // TextButton(
- // onPressed: () {
- // controller.changeMainBottomMenuMap();
- // controller.changeWayPointSheet();
- // },
- // child: Text(
- // "If you want add stop click here".tr,
- // style: AppStyle.title,
- // ),
- // ),
+
+ CupertinoButton(
+ child: Text(
+ !controller.isAnotherOreder
+ ? 'I want to order for someone else'
+ .tr
+ : 'I want to order for myself'.tr,
+ ),
+ onPressed: () {
+ showCupertinoModalPopup(
+ context: context,
+ builder: (BuildContext context) =>
+ CupertinoActionSheet(
+ title: Text('Select Order Type'.tr),
+ message: Text(
+ 'Choose who this order is for'
+ .tr),
+ actions: [
+ CupertinoActionSheetAction(
+ child: Row(
+ mainAxisAlignment:
+ MainAxisAlignment.center,
+ children: [
+ const Icon(
+ CupertinoIcons.person,
+ color: CupertinoColors
+ .activeBlue),
+ const SizedBox(width: 15),
+ Text(
+ 'I want to order for myself'
+ .tr),
+ ],
+ ),
+ onPressed: () {
+ controller
+ .changeisAnotherOreder(
+ false);
+ Navigator.pop(context);
+ },
+ ),
+ CupertinoActionSheetAction(
+ child: Row(
+ mainAxisAlignment:
+ MainAxisAlignment.center,
+ children: [
+ const Icon(
+ CupertinoIcons.person_2,
+ color: CupertinoColors
+ .activeBlue),
+ const SizedBox(width: 15),
+ Text(
+ 'I want to order for someone else'
+ .tr),
+ ],
+ ),
+ onPressed: () {
+ controller
+ .changeisAnotherOreder(
+ true);
+ Navigator.pop(context);
+ },
+ ),
+ ],
+ cancelButton:
+ CupertinoActionSheetAction(
+ isDefaultAction: true,
+ onPressed: () {
+ Navigator.pop(context);
+ },
+ child: Text('Cancel'.tr),
+ ),
+ ),
+ );
+ },
+ )
],
)
],
@@ -199,6 +285,7 @@ class MainBottomMenuMap extends StatelessWidget {
onPressed: () async {
controller.clearPolyline();
controller.data = [];
+ //todo add isAnothorOrder
if (controller.passengerStartLocationFromMap == true) {
controller.newMyLocation = controller.newStartPointLocation;
controller.changeMainBottomMenuMap();
@@ -253,21 +340,24 @@ class MainBottomMenuMap extends StatelessWidget {
controller.changeMainBottomMenuMap();
controller.passengerStartLocationFromMap = true;
controller.isPickerShown = true;
- await controller.mapController?.animateCamera(CameraUpdate.newLatLng(
- LatLng(controller.passengerLocation.latitude,
- controller.passengerLocation.longitude)));
- Get.defaultDialog(
- title: 'Destination selected'.tr,
- titleStyle: AppStyle.title,
- content: Text(
- 'Now select start pick'.tr,
- style: AppStyle.title,
- ),
- confirm: MyElevatedButton(
- title: 'OK'.tr,
- onPressed: () {
- Get.back();
- }));
+ if (controller.isAnotherOreder == false) {
+ await controller.mapController?.animateCamera(
+ CameraUpdate.newLatLng(LatLng(
+ controller.passengerLocation.latitude,
+ controller.passengerLocation.longitude)));
+ Get.defaultDialog(
+ title: 'Destination selected'.tr,
+ titleStyle: AppStyle.title,
+ content: Text(
+ 'Now select start pick'.tr,
+ style: AppStyle.title,
+ ),
+ confirm: MyElevatedButton(
+ title: 'OK'.tr,
+ onPressed: () {
+ Get.back();
+ }));
+ } else {}
}
controller.placesDestination = [];
@@ -289,6 +379,7 @@ class MainBottomMenuMap extends StatelessWidget {
? const Icon(
Icons.arrow_circle_up_rounded,
size: 35,
+ color: AppColor.secondaryColor,
)
: const Icon(
Icons.arrow_circle_down_rounded,
@@ -300,7 +391,10 @@ class MainBottomMenuMap extends StatelessWidget {
? 'Pick or Tap to confirm'.tr
// ? 'Pick your ride location on the map - Tap to confirm'.tr
: "Click here point".tr,
- style: AppStyle.title,
+ style: AppStyle.title.copyWith(
+ color: AppColor.secondaryColor,
+ fontWeight: FontWeight.bold,
+ fontSize: 18),
),
],
),
@@ -318,6 +412,7 @@ class MainBottomMenuMap extends StatelessWidget {
icon: controller.isMainBottomMenuMap
? const Icon(
Icons.ads_click,
+ color: AppColor.secondaryColor,
size: 35,
)
: const Icon(
diff --git a/lib/views/home/map_widget.dart/map_menu_widget.dart b/lib/views/home/map_widget.dart/map_menu_widget.dart
index 872b551..01971a6 100644
--- a/lib/views/home/map_widget.dart/map_menu_widget.dart
+++ b/lib/views/home/map_widget.dart/map_menu_widget.dart
@@ -37,7 +37,8 @@ class MapMenuWidget extends StatelessWidget {
opacity: 1, // Adjust the opacity value as needed
child: AnimatedContainer(
width: Get.width * .6,
- decoration: AppStyle.boxDecoration,
+ decoration: AppStyle.boxDecoration
+ .copyWith(color: AppColor.blueColor),
transform: Matrix4.translationValues(
controller.heightMenu * .1, 1, 1),
curve: Curves.easeOutCubic,
@@ -85,28 +86,11 @@ class MapMenuWidget extends StatelessWidget {
),
Positioned(
right: 5,
- top: 110,
+ top: 80,
child: AnimatedContainer(
duration: const Duration(milliseconds: 300),
- decoration: const BoxDecoration(
- borderRadius: BorderRadius.all(Radius.circular(12)),
- color: AppColor.secondaryColor,
- boxShadow: [
- BoxShadow(
- color: AppColor.accentColor,
- offset: Offset(-3, -3),
- blurRadius: 0,
- spreadRadius: 0,
- blurStyle: BlurStyle.outer),
- BoxShadow(
- color: AppColor.accentColor,
- offset: Offset(3, 3),
- blurRadius: 0,
- spreadRadius: 0,
- blurStyle: BlurStyle.outer)
- ]),
+ decoration: AppStyle.boxDecoration1,
width: controller.widthMenu,
- height: Get.height * .3,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
@@ -136,26 +120,10 @@ class MapMenuWidget extends StatelessWidget {
)),
Positioned(
left: 5,
- top: 110,
+ top: 80,
child: AnimatedContainer(
duration: const Duration(milliseconds: 300),
- decoration: const BoxDecoration(
- borderRadius: BorderRadius.all(Radius.circular(12)),
- color: AppColor.secondaryColor,
- boxShadow: [
- BoxShadow(
- color: AppColor.accentColor,
- offset: Offset(-3, -3),
- blurRadius: 0,
- spreadRadius: 0,
- blurStyle: BlurStyle.outer),
- BoxShadow(
- color: AppColor.accentColor,
- offset: Offset(3, 3),
- blurRadius: 0,
- spreadRadius: 0,
- blurStyle: BlurStyle.outer)
- ]),
+ decoration: AppStyle.boxDecoration1,
width: controller.widthMenu,
height: Get.height * .3,
child: Column(
@@ -225,35 +193,21 @@ class IconMainPageMap extends StatelessWidget {
builder: (context, snapshot) {
return GestureDetector(
onTap: onTap,
- child: Padding(
- padding: const EdgeInsets.all(4),
- child: Container(
- width: double.maxFinite,
- decoration: const BoxDecoration(
- borderRadius: BorderRadius.all(Radius.circular(16)),
- color: AppColor.secondaryColor,
- boxShadow: [
- BoxShadow(
- color: AppColor.accentColor,
- offset: Offset(3, 3),
- blurRadius: 0,
- spreadRadius: 0,
- blurStyle: BlurStyle.outer,
+ child: SizedBox(
+ height: Get.height * .1,
+ width: double.maxFinite,
+ // decoration: AppStyle.boxDecoration,
+ child: Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Column(
+ children: [
+ Icon(icon),
+ Text(
+ title.tr,
+ style: AppStyle.subtitle,
),
],
),
- child: Padding(
- padding: const EdgeInsets.all(8.0),
- child: Column(
- children: [
- Icon(icon),
- Text(
- title.tr,
- style: AppStyle.subtitle,
- ),
- ],
- ),
- ),
),
),
);
diff --git a/lib/views/home/map_widget.dart/ride_begin_passenger.dart b/lib/views/home/map_widget.dart/ride_begin_passenger.dart
index 880e64a..c6a755c 100644
--- a/lib/views/home/map_widget.dart/ride_begin_passenger.dart
+++ b/lib/views/home/map_widget.dart/ride_begin_passenger.dart
@@ -1,6 +1,5 @@
import 'package:SEFER/constant/links.dart';
import 'package:SEFER/views/home/profile/complaint_page.dart';
-import 'package:SEFER/views/widgets/elevated_btn.dart';
import 'package:flutter/material.dart';
import 'package:flutter_font_icons/flutter_font_icons.dart';
import 'package:get/get.dart';
diff --git a/lib/views/widgets/elevated_btn.dart b/lib/views/widgets/elevated_btn.dart
index 16db290..f840c1f 100644
--- a/lib/views/widgets/elevated_btn.dart
+++ b/lib/views/widgets/elevated_btn.dart
@@ -1,19 +1,18 @@
import 'dart:io';
-
-import 'package:SEFER/constant/box_name.dart';
-import 'package:SEFER/main.dart';
import 'package:flutter/material.dart';
-import 'package:SEFER/constant/style.dart';
import 'package:flutter/services.dart';
import 'package:vibration/vibration.dart';
-
-import '../../constant/colors.dart';
+import 'package:SEFER/constant/box_name.dart';
+import 'package:SEFER/constant/colors.dart';
+import 'package:SEFER/constant/style.dart';
+import 'package:SEFER/main.dart';
class MyElevatedButton extends StatelessWidget {
final String title;
final VoidCallback onPressed;
final Color kolor;
final int vibrateDuration;
+
const MyElevatedButton({
Key? key,
required this.title,
@@ -24,28 +23,23 @@ class MyElevatedButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
- bool vibrate = box.read(BoxName.isvibrate) ?? true;
+ final bool vibrate = box.read(BoxName.isvibrate) ?? true;
+
return ElevatedButton(
- style: ButtonStyle(
- backgroundColor: MaterialStateProperty.all(kolor),
- shape: MaterialStateProperty.all(RoundedRectangleBorder(
+ style: ElevatedButton.styleFrom(
+ backgroundColor: kolor,
+ shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12.0),
- )),
- // padding:
- // MaterialStateProperty.all(const EdgeInsets.symmetric(vertical: 15)),
+ ),
),
onPressed: () async {
- // Handle haptic feedback for both iOS and Android
if (vibrate) {
if (Platform.isIOS) {
HapticFeedback.selectionClick();
} else {
- Vibration.vibrate(duration: 100);
- // Vibrate.vibrateWithPauses(pauses);
+ await Vibration.vibrate(duration: vibrateDuration);
}
}
-
- // Ensure the onPressed callback is called after haptic feedback
onPressed();
},
child: Text(
diff --git a/lib/views/widgets/icon_widget_menu.dart b/lib/views/widgets/icon_widget_menu.dart
index e07ff09..b090b95 100644
--- a/lib/views/widgets/icon_widget_menu.dart
+++ b/lib/views/widgets/icon_widget_menu.dart
@@ -20,7 +20,7 @@ class IconWidgetMenu extends StatelessWidget {
return InkWell(
onTap: onpressed,
child: Padding(
- padding: const EdgeInsets.only(top: 25),
+ padding: const EdgeInsets.only(top: 1),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
@@ -29,22 +29,22 @@ class IconWidgetMenu extends StatelessWidget {
decoration: const BoxDecoration(
color: AppColor.secondaryColor,
shape: BoxShape.circle,
- boxShadow: [
- BoxShadow(
- color: AppColor.secondaryColor,
- offset: Offset(-2, -2),
- blurRadius: 0,
- spreadRadius: 0,
- blurStyle: BlurStyle.outer,
- ),
- BoxShadow(
- color: AppColor.accentColor,
- offset: Offset(3, 3),
- blurRadius: 0,
- spreadRadius: 0,
- blurStyle: BlurStyle.outer,
- ),
- ],
+ // boxShadow: [
+ // BoxShadow(
+ // color: AppColor.secondaryColor,
+ // offset: Offset(-2, -2),
+ // blurRadius: 0,
+ // spreadRadius: 0,
+ // blurStyle: BlurStyle.outer,
+ // ),
+ // BoxShadow(
+ // color: AppColor.accentColor,
+ // offset: Offset(3, 3),
+ // blurRadius: 0,
+ // spreadRadius: 0,
+ // blurStyle: BlurStyle.outer,
+ // ),
+ // ],
),
child: Center(
child: Icon(
@@ -56,7 +56,7 @@ class IconWidgetMenu extends StatelessWidget {
),
Text(
title,
- style: AppStyle.subtitle,
+ style: AppStyle.subtitle.copyWith(color: AppColor.secondaryColor),
)
],
),
diff --git a/lib/views/widgets/mycircular.dart b/lib/views/widgets/mycircular.dart
index 366d81a..2fe8e35 100644
--- a/lib/views/widgets/mycircular.dart
+++ b/lib/views/widgets/mycircular.dart
@@ -25,7 +25,7 @@ class MyCircularProgressIndicator extends StatelessWidget {
children: [
Align(
alignment: Alignment.center,
- child: Image.asset('assets/images/logo.png'),
+ child: Image.asset('assets/images/logo.gif'),
),
],
),
diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj
index 4a898a1..670b3e4 100644
--- a/macos/Runner.xcodeproj/project.pbxproj
+++ b/macos/Runner.xcodeproj/project.pbxproj
@@ -227,7 +227,7 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0920;
- LastUpgradeCheck = 1300;
+ LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
331C80D4294CF70F00263BE5 = {
diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index 2676655..6d42e35 100644
--- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -1,6 +1,6 @@