diff --git a/lib/constant/links.dart b/lib/constant/links.dart index 81aad12..0c517dd 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -9,7 +9,8 @@ class AppLink { //=======================ride=================== static const String ride = '$server/ride/'; - static const String addCancelRide = "$server/ride/addCancelRide.php"; + static const String addCancelRide = "$server/ride/cancelRide/add.php"; + static const String cancelRide = "$server/ride/cancelRide/get.php"; //-----------------ridessss------------------ static const String addRides = "$ride/rides/add.php"; static const String getRides = "$ride/rides/get.php"; diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart index 02817b5..1ea5f2e 100644 --- a/lib/controller/functions/crud.dart +++ b/lib/controller/functions/crud.dart @@ -49,6 +49,7 @@ class CRUD { }, ); print(response.request); + var jsonData = jsonDecode(response.body); if (response.statusCode == 200) { if (jsonData['status'] == 'success') { diff --git a/lib/controller/home/map_page_controller.dart b/lib/controller/home/map_page_controller.dart index 4a63a97..3417d57 100644 --- a/lib/controller/home/map_page_controller.dart +++ b/lib/controller/home/map_page_controller.dart @@ -9,9 +9,7 @@ import 'package:ride/constant/box_name.dart'; import 'package:ride/constant/credential.dart'; import 'package:ride/constant/links.dart'; import 'package:ride/controller/functions/crud.dart'; -import 'package:ride/views/home/map_widget.dart/buttom_sheet_map_show.dart'; -import 'package:ride/views/widgets/elevated_btn.dart'; - +import 'package:http/http.dart' as http; import '../../main.dart'; import '../../models/model/locations.dart'; import '../firebase/firbase_messge.dart'; @@ -46,7 +44,7 @@ class MapController extends GetxController { bool isCashConfirmPageShown = false; bool isPaymentMethodPageShown = false; bool isMainBottomMenuMap = true; - double heightButtomSheetShown = 300; + double heightButtomSheetShown = 0; double cashConfirmPageShown = 250; double paymentPageShown = Get.height * .6; late final LatLng southwest; @@ -98,14 +96,32 @@ class MapController extends GetxController { } int selectedReason = -1; - - void selectReason(int index) { + String? cancelNote; + void selectReason(int index, String note) { selectedReason = index; + cancelNote = note; update(); } bool rideConfirm = false; - void cancelRide() async { + changeConfirmRide() { + rideConfirm = true; + //TODO add ride and get ride id and details + update(); + } + + Future cancelRide() async { + var payload = { + "driverID": "1", // Convert to String + "passengerID": + box.read(BoxName.pasengerID).toString(), // Convert to String + "rideID": "222", // Convert to String + "note": cancelNote + }; + + print(rideConfirm); + print(payload); + if (rideConfirm == false) { clearPlaces(); clearpolyline(); @@ -117,12 +133,9 @@ class MapController extends GetxController { clearpolyline(); data = []; changeCancelRidePageShow(); - await CRUD().post(link: AppLink.addCancelRide, payload: { - "driverID": 1, - "passengerID": box.read(BoxName.pasengerID).toString(), - "rideID": 222, - "note": "zxcz" - }); + + await CRUD().post(link: AppLink.addCancelRide, payload: payload); + update(); } } @@ -385,19 +398,25 @@ class MapController extends GetxController { late double costDuration = 0; late double cost = 0; late double distance = 0; - late double duration = 2; + late double duration = 0; DateTime currentTime = DateTime.now(); late Duration durationToAdd; late DateTime newTime = DateTime.now(); - void bottomSheet() { + Future bottomSheet() async { if (data.isNotEmpty) { - String distanceText = data[0]['distance']['text']; - String durationText = data[0]['duration']['text']; + String distanceText = await data[0]['distance']['text']; + String durationText = await data[0]['duration']['text']; distance = getDistanceFromText(distanceText); duration = getDistanceFromText(durationText); durationToAdd = Duration(minutes: duration.toInt()); DateTime currentTime = DateTime.now(); newTime = currentTime.add(durationToAdd); + averageDuration = duration / distance; + costDuration = duration * averageDuration * 0.016; + totalDriver = cost + costDuration; + totalPassenger = totalDriver + (totalDriver * .16); + tax = totalPassenger * .04; + totaME = totalPassenger - totalDriver - tax; update(); if (currentTime.hour >= 21) { if (distanceText.contains('km')) { @@ -407,6 +426,32 @@ class MapController extends GetxController { cost = distance * 0.23 / 1000; update(); } + } else if (currentTime.hour < 5) { + if (distanceText.contains('km')) { + cost = distance * 0.25; + update(); + } else { + cost = distance * 0.25 / 1000; + update(); + } + } else if (currentTime.hour >= 13 && currentTime.hour <= 16) { + if (averageDuration > 2.5) { + if (distanceText.contains('km')) { + cost = distance * 0.23; + update(); + } else { + cost = distance * 0.25 / 1000; + update(); + } + } else { + if (distanceText.contains('km')) { + cost = distance * 0.21; + update(); + } else { + cost = distance * 0.21 / 1000; + update(); + } + } } else { if (distanceText.contains('km')) { cost = distance * 0.21; @@ -416,12 +461,7 @@ class MapController extends GetxController { update(); } } - averageDuration = duration / distance; - costDuration = duration * averageDuration * 0.016; - totalDriver = cost + costDuration; - totalPassenger = totalDriver + (totalDriver * .16); - tax = totalPassenger * .04; - totaME = totalPassenger - totalDriver - tax; + if (totalPassenger < 1) { totalPassenger = 1; update(); @@ -435,8 +475,11 @@ class MapController extends GetxController { update(); } } + + // buttomSheetMapPage(); + changeButtomSheetShown(); } - buttomSheetMapPage(); + // Get.bottomSheet( // Container( // height: 130, diff --git a/lib/controller/local/local_controller.dart b/lib/controller/local/local_controller.dart index 69a4007..118d48c 100644 --- a/lib/controller/local/local_controller.dart +++ b/lib/controller/local/local_controller.dart @@ -12,9 +12,27 @@ class LocaleController extends GetxController { ThemeData appTheme = themeEnglish; changeLang(String langcode) { - Locale locale = Locale(langcode); + Locale locale; + switch (langcode) { + case "ar": + locale = const Locale("ar"); + appTheme = themeArabic; + break; + case "en": + locale = const Locale("en"); + appTheme = themeEnglish; + break; + case "tr": + locale = const Locale("tr"); + appTheme = themeEnglish; + break; + default: + locale = Locale(Get.deviceLocale!.languageCode); + appTheme = themeEnglish; + break; + } + box.write(BoxName.lang, langcode); - appTheme = langcode == "ar" ? themeArabic : themeEnglish; Get.changeTheme(appTheme); Get.updateLocale(locale); update(); @@ -23,15 +41,24 @@ class LocaleController extends GetxController { @override void onInit() { FirebasMessagesController().requestPermission(); - if (box.read(BoxName.lang) == "ar") { - language = const Locale("ar"); - appTheme = themeArabic; - } else if (box.read(BoxName.lang) == "en") { - language = const Locale("en"); - appTheme = themeEnglish; - } else { - language = Locale(Get.deviceLocale!.languageCode); - appTheme = themeEnglish; + String storedLang = box.read(BoxName.lang) ?? ""; + switch (storedLang) { + case "ar": + language = const Locale("ar"); + appTheme = themeArabic; + break; + case "en": + language = const Locale("en"); + appTheme = themeEnglish; + break; + case "tr": + language = const Locale("tr"); + appTheme = themeEnglish; + break; + default: + language = Locale(Get.deviceLocale!.languageCode); + appTheme = themeEnglish; + break; } super.onInit(); } diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 23f623f..00e6cab 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -5,12 +5,178 @@ class MyTranslation extends Translations { Map> get keys => { "ar": { "Choose Language": "اختر اللغة", + "Login": "تسجيل الدخول", + "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": "تحقق من البريد الإلكتروني", + "We sent 5 digit to your Email provided": + "لقد أرسلنا رمزًا مؤلفًا من 5 أرقام إلى بريدك الإلكتروني المُدخَل", + "5 digit": "5 أرقام", + "Send Verification Code": "إرسال رمز التحقق", + "Your Ride Duration is ": "مدة رحلتك ", + "You will be thier in": "ستكون هناك في", + "You trip distance is": "مسافة الرحلة", + "Fee is": "الرسوم", + "From : ": "من: ", + "To : ": "إلى: ", + "Add Promo": "إضافة برومو", + "Confirm Selection": "تأكيد الاختيار", + "distance is": "المسافة", + "duration is": "المدة", + "I don't need a ride anymore": "لست بحاجة إلى رحلة بعد الآن", + "I was just trying the application": "كنت فقط أجرب التطبيق", + "No driver accepted my request": "لم يقبل أي سائق طلبي", + "I added the wrong pick-up/drop-off location": + "أضفت موقع الالتقاط/التسليم الخاطئ", + "I don't have a reason": "ليس لدي سبب", + "Other": "آخر", + "Can we know why you want to cancel Ride ?": + "هل يمكننا معرفة سبب رغبتك في إلغاء الرحلة؟", + "Cancel Ride": "إلغاء الرحلة", + "Add Payment Method": "إضافة طريقة الدفع", + "Your Wallet balance is ": "رصيد المحفظة الخاص بك ", + "Ride Wallet": "محفظة الرحلة", + "Payment Method": "طريقة الدفع", + "Type here Place": "اكتب هنا المكان", + "Are You sure to ride to": "هل أنت متأكد من رغبتك في الذهاب إلى", + "Confirm": "تأكيد", + "Back": "رجوع", + "You are Delete": "أنت على وشك الحذف", + "Deleted": "تم الحذف", + "You Dont Have Any places yet !": "ليس لديك أي أماكن بعد!", + "Favorite Places": "الأماكن المفضلة", + "From : Current Location": "من: الموقع الحالي", + "Where to": "إلى أين", + "Notifications": "الإشعارات", + "Profile": "الملف الشخصي", + "Home": "الصفحة الرئيسية", + "My Cared": "المهتم به", + "Add Card": "إضافة بطاقة", + "Add Credit Card": "إضافة بطاقة ائتمان", + "Please enter the cardholder name": "يرجى إدخال اسم حامل البطاقة", + "Please enter the expiry date": "يرجى إدخال تاريخ انتهاء الصلاحية", + "Please enter the CVV code": "يرجى إدخال رمز CVV", + "Go To Favorite Places": "الانتقال إلى الأماكن المفضلة", + "Go to this Target": "الانتقال إلى هذا الهدف", + "My Profile": "ملفي الشخصي", + "Sign Out": "تسجيل الخروج", + "Home Page": "الصفحة الرئيسية", + "Are you want to go to this site": + "هل ترغب في الانتقال إلى هذا الموقع", + "MyLocation": "موقعي", + "my location": "موقعي", + "Target": "هدف" + }, + "tr": { + "Choose Language": "Dil Seçin", + "Login": "Giriş Yap", + "Enter your email address": "E-posta adresinizi girin", + "Please enter Your Email.": "Lütfen E-posta adresinizi girin.", + "Enter your phone number": "Telefon numaranızı girin", + "Please enter your phone number.": "Lütfen telefon numaranızı girin.", + "Please enter Your Password.": "Lütfen şifrenizi girin.", + "Submit": "Gönder", + "if you dont have account": "Hesabınız yoksa", + "Register": "Kayıt Ol", + "Accept Ride's Terms & Review Privacy Notice": + "Kullanım Koşullarını Kabul Edin ve Gizlilik Bildirimini İnceleyin", + "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.": + "\"Kabul Ediyorum\" seçeneğini seçerek, Kullanım Koşullarını inceledim ve kabul ettim, Gizlilik Bildirimi'ni onaylıyorum. En az 18 yaşındayım.", + "I Agree": "Kabul Ediyorum", + "First name": "Adınız", + "Enter your first name": "Adınızı girin", + "Please enter your first name.": "Lütfen adınızı girin.", + "Last name": "Soyadınız", + "Enter your last name": "Soyadınızı girin", + "Please enter your last name.": "Lütfen soyadınızı girin.", + "City": "Şehir", + "Please enter your City.": "Lütfen şehir adınızı girin.", + "Male": "Erkek", + "Female": "Kadın", + "Verify Email": "E-postayı Doğrula", + "We sent 5 digit to your Email provided": + "E-postanıza 5 haneli bir kod gönderdik", + "5 digit": "5 haneli", + "Send Verification Code": "Doğrulama Kodunu Gönder", + "Your Ride Duration is ": "Seyir Süreniz ", + "You will be thier in": "Orada olacaksınız", + "You trip distance is": "Gezi mesafesi", + "Fee is": "Ücret", + "From : ": "Başlangıç noktası: ", + "To : ": "Varış noktası: ", + "Add Promo": "Promosyon Ekle", + "Confirm Selection": "Seçimi Onayla", + "distance is": "mesafe", + "duration is": "süre", + "I don't need a ride anymore": "Artık bir sürüşe ihtiyacım yok", + "I was just trying the application": "Sadece uygulamayı deniyordum", + "No driver accepted my request": + "Hiçbir sürücü isteğimi kabul etmedi", + "I added the wrong pick-up/drop-off location": + "Yanlış kalkış/varış konumu ekledim", + "I don't have a reason": "Bir sebebim yok", + "Other": "Diğer", + "Can we know why you want to cancel Ride ?": + "Neden sürüşü iptal etmek istediğinizi öğrenebilir miyiz?", + "Cancel Ride": "Sürüşü İptal Et", + "Add Payment Method": "Ödeme Yöntemi Ekle", + "Your Wallet balance is ": "Cüzdan bakiyeniz ", + "Ride Wallet": "Sürüş Cüzdanı", + "Payment Method": "Ödeme Yöntemi", + "Type here Place": "Buraya Yer Girin", + "Are You sure to ride to": + "Şuraya gitmek istediğinizden emin misiniz", + "Confirm": "Onayla", + "Back": "Geri", + "You are Delete": "Silmektesiniz", + "Deleted": "Silindi", + "You Dont Have Any places yet !": "Henüz hiç yeriniz yok!", + "Favorite Places": "Favori Yerler", + "From : Current Location": "Başlangıç noktası: Mevcut Konum", + "Where to": "Nereye", + "Notifications": "Bildirimler", + "Profile": "Profil", + "Home": "Ana Sayfa", + "My Cared": "İlgilendiğim", + "Add Card": "Kart Ekle", + "Add Credit Card": "Kredi Kartı Ekle", + "Please enter the cardholder name": + "Lütfen kart sahibinin adını girin", + "Please enter the expiry date": "Lütfen son kullanma tarihini girin", + "Please enter the CVV code": "Lütfen CVV kodunu girin", + "Go To Favorite Places": "Favori Yerlere Git", + "Go to this Target": "Bu Hedefe Git", + "My Profile": "Profilim", + "Sign Out": "Çıkış Yap", + "Home Page": "Ana Sayfa", + "Are you want to go to this site": "Bu siteye gitmek istiyor musunuz", + "MyLocation": "Konumum", + "my location": "konumum", + "Target": "Hedef" }, "en": { "Choose Language": "Choose Language", }, - "tr": { - "Choose Language": "Dil seç", - }, }; } diff --git a/lib/views/auth/login_page.dart b/lib/views/auth/login_page.dart index f379148..a3c52eb 100644 --- a/lib/views/auth/login_page.dart +++ b/lib/views/auth/login_page.dart @@ -22,7 +22,7 @@ class LoginPage extends StatelessWidget { Get.put(LoginController()); return GetBuilder( builder: (controller) => - MyScafolld(title: 'Login', isleading: false, body: [ + MyScafolld(title: 'Login'.tr, isleading: false, body: [ if (box.read(BoxName.agreeTerms) != 'agreed') agreedpage() else @@ -116,7 +116,9 @@ class LoginPage extends StatelessWidget { borderRadius: BorderRadius.all( Radius.circular(12))), labelText: 'Password'.tr, - hintText: 'Enter your Password'.tr, + hintText: + 'Please enter your phone number.' + .tr, ), validator: (value) { if (value!.isEmpty || @@ -139,7 +141,7 @@ class LoginPage extends StatelessWidget { controller.login(); } }, - title: 'Submit', + title: 'Submit'.tr, ), ) ], @@ -156,7 +158,7 @@ class LoginPage extends StatelessWidget { onTap: () => Get.to(() => const RegisterPage()), animatedTexts: [ TypewriterAnimatedText( - 'Register', + 'Register'.tr, textStyle: AppStyle.headtitle2, speed: const Duration(milliseconds: 200), ), @@ -227,7 +229,7 @@ class LoginPage extends StatelessWidget { ], ), MyElevatedButton( - title: 'Submit', + title: 'Submit'.tr, onPressed: () => controller.saveAgreementTerms()) ], ), diff --git a/lib/views/auth/register_page.dart b/lib/views/auth/register_page.dart index 4c0cb75..87d0733 100644 --- a/lib/views/auth/register_page.dart +++ b/lib/views/auth/register_page.dart @@ -14,7 +14,7 @@ class RegisterPage extends StatelessWidget { Widget build(BuildContext context) { Get.put(RegisterController()); return MyScafolld( - title: 'Register', + title: 'Register'.tr, body: [ GetBuilder( builder: (controller) => Form( diff --git a/lib/views/home/home_page.dart b/lib/views/home/home_page.dart index 674e8b4..282f701 100644 --- a/lib/views/home/home_page.dart +++ b/lib/views/home/home_page.dart @@ -1,4 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:ride/constant/colors.dart'; +import 'package:ride/constant/style.dart'; +import 'package:ride/views/lang/languages.dart'; import 'package:ride/views/widgets/circle_container.dart'; import 'package:ride/views/widgets/my_scafold.dart'; @@ -9,12 +13,52 @@ class HomePage extends StatelessWidget { Widget build(BuildContext context) { return MyScafolld( isleading: true, - title: 'Home Page', + title: 'Home Page'.tr, body: [ - Center( - child: MyCircleContainer( - child: const Icon(Icons.clear), - ), + Column( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), + child: ListTile( + title: Text( + 'Settings'.tr, + style: AppStyle.title, + ), + subtitle: Text('To change some Settings'.tr), + trailing: const Icon( + Icons.arrow_forward_ios, + size: 30, + color: AppColor.primaryColor, + ), + leading: const Icon( + Icons.settings, + color: AppColor.primaryColor, + ), + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), + child: ListTile( + onTap: () { + Get.to(() => Language()); + }, + title: Text( + 'Language'.tr, + style: AppStyle.title, + ), + subtitle: Text('To change Languge the App'.tr), + trailing: const Icon( + Icons.arrow_forward_ios, + size: 30, + color: AppColor.primaryColor, + ), + leading: const Icon( + Icons.language_sharp, + color: AppColor.primaryColor, + ), + ), + ) + ], ), ], ); diff --git a/lib/views/home/map_page.dart b/lib/views/home/map_page.dart index f899b35..7556273 100644 --- a/lib/views/home/map_page.dart +++ b/lib/views/home/map_page.dart @@ -36,7 +36,7 @@ class MapPage extends StatelessWidget { minMaxZoomPreference: const MinMaxZoomPreference(6, 18), onLongPress: (argument) { Get.defaultDialog( - title: 'Are you want to go to this site', + title: 'Are you want to go to this site'.tr, content: Column( children: [ Text('${argument.latitude},${argument.longitude}'), @@ -59,7 +59,7 @@ class MapPage extends StatelessWidget { controller.hidePlaces(); controller.changeButtomSheetShown(); - controller.bottomSheet(); + // controller.bottomSheet(); }, initialCameraPosition: CameraPosition( target: controller.mylocation, @@ -73,17 +73,17 @@ class MapPage extends StatelessWidget { icon: controller.carIcon, markerId: MarkerId(carLocation.toString())), Marker( - markerId: const MarkerId('MyLocation'), + markerId: MarkerId('MyLocation'.tr), position: controller.mylocation, draggable: true, icon: controller.markerIcon, onDragEnd: (value) { print(value); }, - infoWindow: const InfoWindow(title: 'my location'), + infoWindow: InfoWindow(title: 'my location'.tr), ), Marker( - markerId: const MarkerId('destination'), + markerId: MarkerId('Target'.tr), position: controller.mydestination, draggable: true, onDragEnd: (v) { diff --git a/lib/views/home/map_widget.dart/buttom_sheet_map_show.dart b/lib/views/home/map_widget.dart/buttom_sheet_map_show.dart index 599f1df..d5a5d00 100644 --- a/lib/views/home/map_widget.dart/buttom_sheet_map_show.dart +++ b/lib/views/home/map_widget.dart/buttom_sheet_map_show.dart @@ -60,13 +60,13 @@ GetBuilder buttomSheetMapPage() { Text( '${'Your Ride Duration is '.tr}${controller.duration} minutes'), Text( - 'You will be thier in ${DateFormat('h:mm a').format(controller.newTime)}'), + '${'You will be thier in'.tr} ${DateFormat('h:mm a').format(controller.newTime)}'), Text( - 'You trip distance is ${controller.distance} KM') + '${'You trip distance is'.tr} ${controller.distance} KM') ], ), Text( - 'Fee is \n${controller.totalPassenger.toStringAsFixed(2)}', + '${'Fee is'.tr} \n${controller.totalPassenger.toStringAsFixed(2)}', style: AppStyle.subtitle, ), ], @@ -196,8 +196,9 @@ GetBuilder buttomSheetMapPage() { ), ), MyElevatedButton( - title: 'Confirm Selection', - onPressed: () {}, + title: 'Confirm Selection'.tr, + onPressed: () => + controller.changeConfirmRide(), ) ], ), @@ -225,11 +226,11 @@ class Details extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Text( - 'distance is ${controller.data[0]['distance']['text']}', + '${'distance is'.tr} ${controller.data[0]['distance']['text']}', style: AppStyle.title, ), Text( - 'duration is ${controller.data[0]['duration']['text']}', + '${'duration is'.tr} ${controller.data[0]['duration']['text']}', style: AppStyle.title, ), ], diff --git a/lib/views/home/map_widget.dart/cancel_raide_page.dart b/lib/views/home/map_widget.dart/cancel_raide_page.dart index 9ba275c..de72d25 100644 --- a/lib/views/home/map_widget.dart/cancel_raide_page.dart +++ b/lib/views/home/map_widget.dart/cancel_raide_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:get/get.dart'; import 'package:ride/constant/colors.dart'; import 'package:ride/constant/style.dart'; @@ -65,7 +64,11 @@ GetBuilder cancelRidePage() { groupValue: controller.selectedReason, onChanged: (int? value) { print(value); - controller.selectReason(value!); + print(reasons[index]); + controller.selectReason( + value!, + reasons[index].toString(), + ); }, ), ); @@ -74,7 +77,7 @@ GetBuilder cancelRidePage() { ), MyElevatedButton( title: 'Cancel Ride'.tr, - onPressed: () async { + onPressed: () { controller.cancelRide(); }, ), diff --git a/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart b/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart index 72837b7..2c96a01 100644 --- a/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart +++ b/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart @@ -113,7 +113,7 @@ class CashConfirmPageShown extends StatelessWidget { indent: 1, ), MyElevatedButton( - title: 'Add Payment Method', + title: 'Add Payment Method'.tr, onPressed: () { controller.changePaymentMethodPageShown(); CreditCardController().openPayment(); diff --git a/lib/views/home/map_widget.dart/form_search_places.dart b/lib/views/home/map_widget.dart/form_search_places.dart index 7159f64..99d360d 100644 --- a/lib/views/home/map_widget.dart/form_search_places.dart +++ b/lib/views/home/map_widget.dart/form_search_places.dart @@ -21,7 +21,7 @@ GetBuilder formSearchPlaces() { child: TextField( decoration: InputDecoration( suffixIcon: const Icon(Icons.search), - hintText: 'Type here Place', + hintText: 'Type here Place'.tr, hintMaxLines: 1, prefixIcon: IconButton( onPressed: () { @@ -56,7 +56,8 @@ GetBuilder formSearchPlaces() { onTap: () { controller.changeHeight(); Get.defaultDialog( - title: 'Are You sure to ride to ${res['name']}', + title: + '${'Are You sure to ride to'.tr} ${res['name']}', middleText: '', confirm: MyElevatedButton( title: 'Confirm'.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 1160e4b..f29e52a 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 @@ -67,13 +67,13 @@ class MainBottomMenuMap extends StatelessWidget { child: AnimatedTextKit( animatedTexts: [ ScaleAnimatedText( - 'Where to ${box.read(BoxName.name)}'), + '${'Where to'.tr} ${box.read(BoxName.name)}'), WavyAnimatedText( - 'Where to ${box.read(BoxName.name)}'), + '${'Where to'.tr} ${box.read(BoxName.name)}'), FlickerAnimatedText( - 'Where to ${box.read(BoxName.name)}'), + '${'Where to'.tr} ${box.read(BoxName.name)}'), WavyAnimatedText( - 'Where to ${box.read(BoxName.name)}'), + '${'Where to'.tr} ${box.read(BoxName.name)}'), ], isRepeatingAnimation: true, onTap: () { @@ -90,7 +90,7 @@ class MainBottomMenuMap extends StatelessWidget { controller.isMainBottomMenuMap ? const SizedBox() : Text( - 'From : Current Location', + 'From : Current Location'.tr, style: AppStyle.subtitle, ), controller.isMainBottomMenuMap @@ -181,8 +181,8 @@ class FavioratePlacesDialogu extends StatelessWidget { TableName.placesFavorite, favoritePlaces[index]['id']); Get.back(); - Get.snackbar('Deleted ', - 'You are Delete ${favoritePlaces[index]['name']} from your list', + Get.snackbar('Deleted'.tr, + '${'You are Delete'.tr} ${favoritePlaces[index]['name']} from your list', backgroundColor: AppColor.accentColor); }, diff --git a/lib/views/home/map_widget.dart/payment_method.page.dart b/lib/views/home/map_widget.dart/payment_method.page.dart index 039bd74..26f8d75 100644 --- a/lib/views/home/map_widget.dart/payment_method.page.dart +++ b/lib/views/home/map_widget.dart/payment_method.page.dart @@ -83,7 +83,7 @@ class PaymentMethodPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ MyElevatedButton( - title: 'Add Credit Card', + title: 'Add Credit Card'.tr, onPressed: () async { SecureStorage().saveData( BoxName.cardNumber, @@ -196,7 +196,8 @@ class CreditCardWidget extends StatelessWidget { labelText: 'Cardholder Name'), validator: (value) { if (value!.isEmpty) { - return 'Please enter the cardholder name'; + return 'Please enter the cardholder name' + .tr; } return null; }, @@ -228,7 +229,8 @@ class CreditCardWidget extends StatelessWidget { labelText: 'Expiry Date'), validator: (value) { if (value!.isEmpty) { - return 'Please enter the expiry date'; + return 'Please enter the expiry date' + .tr; } return null; }, @@ -262,7 +264,7 @@ class CreditCardWidget extends StatelessWidget { validator: (value) { if (value!.isEmpty && value.length != 3) { - return 'Please enter the CVV code'; + return 'Please enter the CVV code'.tr; } return null; }, diff --git a/lib/views/home/map_widget.dart/picker_animation_container.dart b/lib/views/home/map_widget.dart/picker_animation_container.dart index 4bcb8d0..77be5d6 100644 --- a/lib/views/home/map_widget.dart/picker_animation_container.dart +++ b/lib/views/home/map_widget.dart/picker_animation_container.dart @@ -75,7 +75,7 @@ class PickerAnimtionContainerFormPlaces extends StatelessWidget { ? InkWell( onTap: () {}, child: formSearchPlaces(), - ) + ) : Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, @@ -165,7 +165,7 @@ class PickerAnimtionContainerFormPlaces extends StatelessWidget { Get.back(); Get.snackbar( 'Deleted ', - 'You are Delete ${favoritePlaces[index]['name']} from your list', + '${'You are Delete'.tr} ${favoritePlaces[index]['name']} from your list', backgroundColor: AppColor .accentColor); @@ -191,7 +191,7 @@ class PickerAnimtionContainerFormPlaces extends StatelessWidget { if (controller.isPickerShown && controller.places.isEmpty) MyElevatedButton( - title: 'Go to this Target', + title: 'Go to this Target'.tr, onPressed: () async { await controller.getMap( '${controller.mylocation.latitude},${controller.mylocation.longitude}', diff --git a/lib/views/home/profile/passenger_profile_page.dart b/lib/views/home/profile/passenger_profile_page.dart index 4f7f11c..1807c20 100644 --- a/lib/views/home/profile/passenger_profile_page.dart +++ b/lib/views/home/profile/passenger_profile_page.dart @@ -18,7 +18,7 @@ class PassengerProfilePage extends StatelessWidget { Get.put(ProfileController()); return MyScafolld( isleading: true, - title: 'My Profile', + title: 'My Profile'.tr, body: [ GetBuilder( builder: (controller) => controller.isloading @@ -177,7 +177,7 @@ class PassengerProfilePage extends StatelessWidget { class GenderPicker extends StatelessWidget { final ProfileController controller = Get.put(ProfileController()); - final List genderOptions = ['Male', 'Female', 'Other']; + final List genderOptions = ['Male'.tr, 'Female'.tr, 'Other'.tr]; GenderPicker({super.key}); diff --git a/lib/views/lang/languages.dart b/lib/views/lang/languages.dart index d58363b..f850edc 100644 --- a/lib/views/lang/languages.dart +++ b/lib/views/lang/languages.dart @@ -6,46 +6,57 @@ import 'package:ride/views/widgets/elevated_btn.dart'; import '../../constant/box_name.dart'; import '../../controller/local/local_controller.dart'; import '../auth/login_page.dart'; -import '../home/home_page.dart'; import '../home/map_page.dart'; -class Language extends GetView { +class Language extends StatelessWidget { const Language({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( - body: Center( + body: GetBuilder( + builder: (controller) => Center( child: Container( - padding: const EdgeInsets.all(15), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Text("Choose Language".tr, - style: Theme.of(context).textTheme.headlineLarge), - const SizedBox(height: 20), - MyElevatedButton( - title: 'Ar', - onPressed: () { - controller.changeLang("ar"); - // main(); - box.read(BoxName.email) != null - ? Get.offAll(() => const MapPage()) - : Get.offAll(() => LoginPage()); - }, - ), - MyElevatedButton( - title: "En", - onPressed: () { - controller.changeLang("en"); - box.read(BoxName.email) != null - ? Get.offAll(() => const MapPage()) - : Get.offAll(() => LoginPage()); - }, - ), - ], - )), + padding: const EdgeInsets.all(15), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Text( + "Choose Language".tr, + style: Theme.of(context).textTheme.headlineLarge, + ), + const SizedBox(height: 20), + MyElevatedButton( + title: 'Ar', + onPressed: () { + controller.changeLang("ar"); + box.read(BoxName.email) != null + ? Get.offAll(() => const MapPage()) + : Get.offAll(() => LoginPage()); + }, + ), + MyElevatedButton( + title: "En", + onPressed: () { + controller.changeLang("en"); + box.read(BoxName.email) != null + ? Get.offAll(() => const MapPage()) + : Get.offAll(() => LoginPage()); + }, + ), + MyElevatedButton( + title: "Tr", + onPressed: () { + controller.changeLang("tr"); + box.read(BoxName.email) != null + ? Get.offAll(() => const MapPage()) + : Get.offAll(() => LoginPage()); + }, + ), + ], + ), + ), ), - ); + )); } }