From 5a2f57f71461c5a724b6d168dfecf632b227b656 Mon Sep 17 00:00:00 2001 From: ahmadherafi Date: Mon, 13 Nov 2023 09:59:14 +0300 Subject: [PATCH] editing card details --- assets/icons/Eye.svg | 11 + assets/icons/Logo-Mini.svg | 37 + assets/icons/Share.svg | 10 + assets/icons/whatsapp (1).svg | 4 + assets/images/download.jpg | Bin 0 -> 142421 bytes lib/common/widgets/listview.dart | 5 +- lib/core/localization/localization.dart | 63 +- lib/core/routing/routing_manager.dart | 21 +- .../url launcher/url_launcher_service.dart | 10 + .../presentation_layer/screens/account.dart | 112 +-- .../business_logic_layer/card_controller.dart | 39 +- .../card/data_layer/model/working_time.dart | 11 + .../screens/card_details.dart | 832 +++++++++--------- .../presentation_layer/screens/feedback.dart | 31 + .../screens/images_view.dart | 48 + .../screens/review_form.dart | 85 ++ .../widgets/card_service.dart | 12 +- .../widgets/consultation_price.dart | 75 ++ .../widgets/feedback_widget.dart | 24 + .../presentation_layer/widgets/image.dart | 35 + .../presentation_layer/widgets/my_card.dart | 3 +- .../card/presentation_layer/widgets/rate.dart | 244 +++++ .../card/presentation_layer/widgets/star.dart | 41 + .../widgets/view_ratings.dart | 85 ++ .../widgets/wording_time.dart | 83 ++ pubspec.yaml | 5 + 26 files changed, 1397 insertions(+), 529 deletions(-) create mode 100644 assets/icons/Eye.svg create mode 100644 assets/icons/Logo-Mini.svg create mode 100644 assets/icons/Share.svg create mode 100644 assets/icons/whatsapp (1).svg create mode 100644 assets/images/download.jpg create mode 100644 lib/features/card/data_layer/model/working_time.dart create mode 100644 lib/features/card/presentation_layer/screens/feedback.dart create mode 100644 lib/features/card/presentation_layer/screens/images_view.dart create mode 100644 lib/features/card/presentation_layer/screens/review_form.dart create mode 100644 lib/features/card/presentation_layer/widgets/consultation_price.dart create mode 100644 lib/features/card/presentation_layer/widgets/feedback_widget.dart create mode 100644 lib/features/card/presentation_layer/widgets/image.dart create mode 100644 lib/features/card/presentation_layer/widgets/rate.dart create mode 100644 lib/features/card/presentation_layer/widgets/star.dart create mode 100644 lib/features/card/presentation_layer/widgets/view_ratings.dart create mode 100644 lib/features/card/presentation_layer/widgets/wording_time.dart diff --git a/assets/icons/Eye.svg b/assets/icons/Eye.svg new file mode 100644 index 0000000..a934494 --- /dev/null +++ b/assets/icons/Eye.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/icons/Logo-Mini.svg b/assets/icons/Logo-Mini.svg new file mode 100644 index 0000000..611f22f --- /dev/null +++ b/assets/icons/Logo-Mini.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/icons/Share.svg b/assets/icons/Share.svg new file mode 100644 index 0000000..8fc7e36 --- /dev/null +++ b/assets/icons/Share.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/icons/whatsapp (1).svg b/assets/icons/whatsapp (1).svg new file mode 100644 index 0000000..618f01b --- /dev/null +++ b/assets/icons/whatsapp (1).svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/download.jpg b/assets/images/download.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc29d80d91373f2b60480374b6e92b2845536175 GIT binary patch literal 142421 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]{<-|Y4KT_8|49t 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%0DFo${)U4cCfb{>u7dAu%n%Yy-=3pWHS{OX^g_ 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 X>1){RpHN=h2rL~)y&j;U`nU9dBY`j= literal 0 HcmV?d00001 diff --git a/lib/common/widgets/listview.dart b/lib/common/widgets/listview.dart index 716a30f..3813f45 100644 --- a/lib/common/widgets/listview.dart +++ b/lib/common/widgets/listview.dart @@ -7,6 +7,7 @@ class ListViewWidget extends StatelessWidget { final Axis? scrollDirection; final ScrollController? scrollController; final double? itemExtent; + final EdgeInsetsGeometry? padding; const ListViewWidget( {super.key, required this.itemCount, @@ -14,11 +15,13 @@ class ListViewWidget extends StatelessWidget { this.itemExtent, this.physics, this.scrollDirection, - this.scrollController}); + this.scrollController, + this.padding}); @override Widget build(BuildContext context) { return ListView.builder( + padding: padding, itemExtent: itemExtent, controller: scrollController, scrollDirection: scrollDirection ?? Axis.vertical, diff --git a/lib/core/localization/localization.dart b/lib/core/localization/localization.dart index eb1b8fd..449c17b 100644 --- a/lib/core/localization/localization.dart +++ b/lib/core/localization/localization.dart @@ -9,20 +9,17 @@ class PagesTranslations implements Translations { 'cancel_appointment': 'Cancel Appointment', 'appointment_canceling': 'Appontiment Canceling', 'are_you_sure_?': 'Are You Sure?', - 'appointment_canceled_successfully': - 'Appointment Canceled Successfully', + 'appointment_canceled_successfully': 'Appointment Canceled Successfully', 'cancel': 'Cancel', 'appointment': 'Appointment', 'you_have_an_appointment_on': 'You have An Appointment on', - 'appointment_scheduled_successfully.': - 'Appointment scheduled successfully.', + 'appointment_scheduled_successfully.': 'Appointment scheduled successfully.', 'am': 'AM', 'pm': 'PM', 'available_times': 'Available Times', 'you_have_an_appointment': 'Details', 'schedule_an_appointment': 'Appointment', - 'There are no notifications to display at this time.': - 'There are no notifications to display at this time.', + 'There are no notifications to display at this time.': 'There are no notifications to display at this time.', 'no_previous_conversations_!': 'No Previous Conversations !', 'add_some_by_contact_with_others': 'Add Some By Contact With Others', 'this_session_is_terminated': 'This session is terminated', @@ -59,8 +56,7 @@ class PagesTranslations implements Translations { 'yes': 'Yes', 'no': 'No', 'are_you_sure_you_want_to_exit?': 'Are You sure you want to exit?', - 'press_(new_card)_to_add_new_card!': - 'Press (new card) to add new card!', + 'press_(new_card)_to_add_new_card!': 'Press (new card) to add new card!', 'could_not_send_email': 'Could not send e-mail', 'could_not_make_call': 'Could not make call', 'card_images': 'Card Images', @@ -178,24 +174,32 @@ class PagesTranslations implements Translations { "address": "Address", "postal_code": "Postal Code", "website": "Website", - "the_card_has_been_edited_successfully": - "The Card Has been edited Successfully", + "the_card_has_been_edited_successfully": "The Card Has been edited Successfully", "please_enter_the_website": "Please Enter The Website", "please_enter_the_service": "please Enter The Service", "please_enter_the_details": "Please Enter The Details", - "the_card_has_been_added_successfully": - "The Card Has been added Successfully", + "the_card_has_been_added_successfully": "The Card Has been added Successfully", "add_card": "Add Card", "your_message": "Your Message", 'search_chat': 'Search Chat', - 'photo_has_been_saved_successfully': - 'Photo has been saved successfully', + 'photo_has_been_saved_successfully': 'Photo has been saved successfully', 'failed_to_save': 'Failed to Save', 'unknown_error': 'UnKnown error', - 'the_card_has_been_deleted_successfully': - 'The Card has been deleted successfully', + 'the_card_has_been_deleted_successfully': 'The Card has been deleted successfully', 'enter_your_email_to_reset_your_password_please_\n_we_will_send_verification_code_to_your_email.': 'Enter your email to reset your password please \n We will send verification code to your Email.', + 'consultation price:': "consultation price:", + "Number of users who rate this : ": "Number of users who rate this : ", + "Rate Now": "Rate Now", + "Waiting": "Waiting", + "Performance": "Performance", + "Price": "Price", + "waiting?": "waiting?", + "Performance?": "Performance?", + "Price?": "Price?", + "Next": "Next", + "OK": "OK", + "back": "back", }, 'ar': { 'english': 'الإنجليزية', @@ -213,11 +217,9 @@ class PagesTranslations implements Translations { 'available_times': 'الأوقات المتاحة', 'you_have_an_appointment': 'التفاصيل', 'schedule_an_appointment': 'حجز موعد', - 'There are no notifications to display at this time.': - 'لا توجد إشعارات لعرضها في الوقت الحالي.', + 'There are no notifications to display at this time.': 'لا توجد إشعارات لعرضها في الوقت الحالي.', 'no_previous_conversations_!': 'لا توجد محادثات سابقة!', - 'add_some_by_contact_with_others': - 'أضف بعضها عن طريق التواصل مع الآخرين', + 'add_some_by_contact_with_others': 'أضف بعضها عن طريق التواصل مع الآخرين', "this_session_is_terminated": "تم إنهاء هذه الجلسة", "log_out_from_other_devices": "تسجيل الخروج من الأجهزة الأخرى", 'version_update': 'تحديث الإصدار', @@ -253,8 +255,7 @@ class PagesTranslations implements Translations { 'yes': 'نعم', 'no': 'لا', 'are_you_sure_you_want_to_exit?': 'هل تريد الخروج من التطبيق؟', - 'press_(new_card)_to_add_new_card!': - 'اضغط (بطاقة جديدة) لإضافة بطاقة جديدة!', + 'press_(new_card)_to_add_new_card!': 'اضغط (بطاقة جديدة) لإضافة بطاقة جديدة!', 'card_images': 'صور البطاقة', 'photo_has_been_saved_successfully': 'تم حفظ الصورة بنجاح', 'save_to_gallery': 'حفظ في المعرض', @@ -266,10 +267,8 @@ class PagesTranslations implements Translations { 'تواصل معنا, sed do eiusmod tempor incididunt Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt', 'about_us_content': 'من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن من نحن', - 'terms_content': - "الشروط الشروط الشروط الشروط الشروط الشروط الشروط والخصوصية والخصوصية والخصوصية", - 'privacy_content': - "الشروط الشروط الشروط الشروط الشروط الشروط الشروط والخصوصية والخصوصية والخصوصية", + 'terms_content': "الشروط الشروط الشروط الشروط الشروط الشروط الشروط والخصوصية والخصوصية والخصوصية", + 'privacy_content': "الشروط الشروط الشروط الشروط الشروط الشروط الشروط والخصوصية والخصوصية والخصوصية", 'profile_edited_succesfully': 'تم تعديل الملف الشخصي بنجاح', "enter_your_email_to_reset_your_password_please_\n_we_will_send_verification_code_to_your_email.": "يرجى إدخال بريدك الإلكتروني لإعادة تعيين كلمة المرور \n سنرسل رمز التحقق إلى بريدك الإلكتروني.", @@ -383,6 +382,18 @@ class PagesTranslations implements Translations { "your_message": "رسالتك", 'search_chat': 'البحث في الدردشات', 'failed_to_save': 'فشل الحفظ', + 'consultation price:': 'سعر المعاينة', + "Number of users who rate this : ": "عدد الأشخاص الذين قيموا هذه البطاقة:", + "Rate Now": "قيم الان", + "Waiting": "الانتظار", + "Performance": "الأداء", + "Price": "السعر", + "waiting?": "الانتطار؟", + "Performance?": "الأداء؟", + "Price?": "السعر؟", + "Next": "التالي", + "OK": "تم", + "back": "رجوع", }, }; } diff --git a/lib/core/routing/routing_manager.dart b/lib/core/routing/routing_manager.dart index 2650ad5..cf5211e 100644 --- a/lib/core/routing/routing_manager.dart +++ b/lib/core/routing/routing_manager.dart @@ -8,6 +8,9 @@ import 'package:taafee_mobile/features/auth/presentation_layer/screens/forgot_pa import 'package:taafee_mobile/features/auth/presentation_layer/screens/reset_password.dart'; import 'package:taafee_mobile/features/auth/presentation_layer/screens/verification_code_reset_password.dart'; import 'package:taafee_mobile/features/card/presentation_layer/screens/card_details.dart'; +import 'package:taafee_mobile/features/card/presentation_layer/screens/feedback.dart'; +import 'package:taafee_mobile/features/card/presentation_layer/screens/images_view.dart'; +import 'package:taafee_mobile/features/card/presentation_layer/screens/review_form.dart'; import 'package:taafee_mobile/features/category/presentation_layer/screens/category_details.dart'; import 'package:taafee_mobile/features/chat/presentation_layer/screens/chat_details.dart'; import 'package:taafee_mobile/features/home/presentation_layer/screens/super_home.dart'; @@ -44,8 +47,7 @@ class RouteName { static String categoryDetails = '/category-details'; static String chatDetails = '/chat-details'; static String resetPassword = '/reset-password-screen'; - static String verificationCodeResetPassword = - '/verification-code-reset-password-screen'; + static String verificationCodeResetPassword = '/verification-code-reset-password-screen'; static String cardDetails = '/card-details-screen'; static String addCard = '/add-card-screen'; static String notification = '/notification-screen'; @@ -54,6 +56,9 @@ class RouteName { static String contactUs = '/contact-us-screen'; static String privacy = '/privacy-screen'; static String forgotPassword = '/forgot-password-screen'; + static String feedback = '/feedback-screen'; + static String reviewForm = '/review-form-screen'; + static String imageView = '/image-view-screen'; } class RoutingManager { @@ -154,6 +159,18 @@ class RoutingManager { name: RouteName.forgotPassword, page: () => ForgotPasswordScreen(), ), + GetPage( + name: RouteName.feedback, + page: () => const FeedbackScreen(), + ), + GetPage( + name: RouteName.reviewForm, + page: () => const ReviewFormScreen(), + ), + GetPage( + name: RouteName.imageView, + page: () => ImagesViewScreen(), + ), ]; static void off(String route) { diff --git a/lib/core/url launcher/url_launcher_service.dart b/lib/core/url launcher/url_launcher_service.dart index 9e6071c..62843b6 100644 --- a/lib/core/url launcher/url_launcher_service.dart +++ b/lib/core/url launcher/url_launcher_service.dart @@ -27,4 +27,14 @@ class UrlLauncherService { Toast.showToast('could_not_make_call'.tr); } } + + static Future sendWhatsapp(String phoneNumber) async { + // String phone = "+963 940903459"; + String androidUrl = "whatsapp://send?phone=$phoneNumber&text=Hi, I need some help"; + try { + await launchUrl(Uri.parse(androidUrl)); + } on Exception { + Toast.showToast("WhatsApp is not installed."); + } + } } diff --git a/lib/features/account/presentation_layer/screens/account.dart b/lib/features/account/presentation_layer/screens/account.dart index da41cae..ff9580b 100644 --- a/lib/features/account/presentation_layer/screens/account.dart +++ b/lib/features/account/presentation_layer/screens/account.dart @@ -4,12 +4,15 @@ import 'package:get/get.dart'; import 'package:taafee_mobile/common/const/const.dart'; import 'package:taafee_mobile/common/extensions/widget_extension.dart'; import 'package:taafee_mobile/common/widgets/button.dart'; +import 'package:taafee_mobile/common/widgets/listview.dart'; import 'package:taafee_mobile/common/widgets/text.dart'; import 'package:taafee_mobile/common/widgets/textfiled.dart'; import 'package:taafee_mobile/core/routing/routing_manager.dart'; import 'package:taafee_mobile/features/account/business_logic_layer/account_controller.dart'; +import 'package:taafee_mobile/features/card/presentation_layer/widgets/image.dart'; import 'package:taafee_mobile/features/auth/business_logic_layer/auth_controller.dart'; import 'package:taafee_mobile/features/card/business_logic_layer/card_controller.dart'; +import 'package:taafee_mobile/features/card/presentation_layer/widgets/consultation_price.dart'; import 'package:taafee_mobile/features/chat/business%20logic%20layer/chat_controller.dart'; import 'package:taafee_mobile/features/chat/data_layer/model/room.dart'; import 'package:taafee_mobile/features/chat/presentation_layer/widgets/circle_avatar.dart'; @@ -46,9 +49,8 @@ class AccountScreen extends StatelessWidget { child: Obx(() { return (!authController.isGuest.value) ? Row( - mainAxisAlignment: !homeController.isArabic.value - ? MainAxisAlignment.end - : MainAxisAlignment.start, + mainAxisAlignment: + !homeController.isArabic.value ? MainAxisAlignment.end : MainAxisAlignment.start, children: [ SvgPicture.asset( "assets/icons/log out.svg", @@ -62,11 +64,8 @@ class AccountScreen extends StatelessWidget { ), Visibility( visible: authController.logoutState.loading, - child: SizedBox( - width: 16, - height: 16, - child: const CircularProgressIndicator() - .center())), + child: + SizedBox(width: 16, height: 16, child: const CircularProgressIndicator().center())), ], ).onTap(() { authController.logout( @@ -85,9 +84,8 @@ class AccountScreen extends StatelessWidget { ); }) : Row( - mainAxisAlignment: !homeController.isArabic.value - ? MainAxisAlignment.end - : MainAxisAlignment.start, + mainAxisAlignment: + !homeController.isArabic.value ? MainAxisAlignment.end : MainAxisAlignment.start, children: [ SvgPicture.asset( "assets/icons/log out.svg", @@ -101,16 +99,12 @@ class AccountScreen extends StatelessWidget { ), Visibility( visible: authController.logoutState.loading, - child: SizedBox( - width: 16, - height: 16, - child: const CircularProgressIndicator() - .center())), + child: + SizedBox(width: 16, height: 16, child: const CircularProgressIndicator().center())), ], ).onTap(() { RoutingManager.offAll(RouteName.login); - String? languangeCode = - homeController.storage.getLanguage(); + String? languangeCode = homeController.storage.getLanguage(); homeController.storage.clearCache(); if (languangeCode != null) { homeController.storage.saveLanguage(languangeCode); @@ -126,29 +120,49 @@ class AccountScreen extends StatelessWidget { isUserAvatar: true, radius: Responsive.isTablet() ? 80 : 40, ).paddingOnly(bottom: 10), - Row( - mainAxisAlignment: MainAxisAlignment.center, + Column( + mainAxisAlignment: MainAxisAlignment.end, children: [ - Obx( - () => BoldTextWidget( - " ${homeController.user.value!.firstName} " - " ${homeController.user.value!.lastName} ", - fontSize: Responsive.isTablet() ? 22 : 14, - color: AppColors.textColor, - ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Obx( + () => BoldTextWidget( + " ${homeController.user.value!.firstName} " + " ${homeController.user.value!.lastName} ", + fontSize: Responsive.isTablet() ? 22 : 14, + color: AppColors.textColor, + ), + ), + if (!authController.isGuest.value) + SvgPicture.asset( + "assets/icons/edit-2.svg", + ).onTap(() { + RoutingManager.to(RouteName.editProfile); + }), + ], + ), + MediumTextWidget( + homeController.user.value!.email, + fontSize: Responsive.isTablet() ? 22 : 14, ), - if (!authController.isGuest.value) - SvgPicture.asset( - "assets/icons/edit-2.svg", - ).onTap(() { - RoutingManager.to(RouteName.editProfile); - }), ], ), - MediumTextWidget( - homeController.user.value!.email, - fontSize: Responsive.isTablet() ? 22 : 14, - ).paddingOnly(bottom: 20), + + // Stack( + // alignment: Alignment.topCenter, + // children: [ + // Container( + // width: Get.width, + // height: 100, + // color: Colors.red, + // ), + // CircleAvatarWidget( + // isUserAvatar: true, + // radius: Responsive.isTablet() ? 80 : 40, + // ).paddingOnly(bottom: 0), + // ], + // ), AccountWidget( icon: "my cards.svg", title: "my_cards".tr, @@ -267,8 +281,7 @@ class AccountScreen extends StatelessWidget { onChanged: (value) { if (value == 'english') { accountController.changeLanguage(Languages.english); - homeController - .setUiLanguage(Languages.english.code); + homeController.setUiLanguage(Languages.english.code); } if (value == 'arabic') { accountController.changeLanguage(Languages.arabic); @@ -278,8 +291,7 @@ class AccountScreen extends StatelessWidget { }) ], ).paddingSymmetric(horizontal: 15), - ).paddingSymmetric( - horizontal: Responsive.isTablet() ? Get.width * 0.15 : 0), + ).paddingSymmetric(horizontal: Responsive.isTablet() ? Get.width * 0.15 : 0), Divider( color: AppColors.dividerColor, thickness: 1, @@ -359,10 +371,8 @@ class AccountScreen extends StatelessWidget { if (error.toString() == "invalid_credentials") { Toast.showToast("invalid_credentials".tr); } - if (error.toString() == - "You Have no Internet Connection") { - Toast.showToast( - "you_have_no_internet_connection".tr); + if (error.toString() == "You Have no Internet Connection") { + Toast.showToast("you_have_no_internet_connection".tr); } }, ); @@ -409,8 +419,7 @@ class AccountScreen extends StatelessWidget { Obx(() { return ButtonWidget( hideTextOnLoading: true, - isLoading: authController - .terminateOtherSessionsState.loading, + isLoading: authController.terminateOtherSessionsState.loading, width: 100, textColor: Colors.white, color: AppColors.redColor, @@ -420,14 +429,11 @@ class AccountScreen extends StatelessWidget { RoutingManager.back(); }, onError: (error) { - if (error.toString() == - "invalid_credentials") { + if (error.toString() == "invalid_credentials") { Toast.showToast("invalid_credentials".tr); } - if (error.toString() == - "You Have no Internet Connection") { - Toast.showToast( - "you_have_no_internet_connection".tr); + if (error.toString() == "You Have no Internet Connection") { + Toast.showToast("you_have_no_internet_connection".tr); } }, ); diff --git a/lib/features/card/business_logic_layer/card_controller.dart b/lib/features/card/business_logic_layer/card_controller.dart index a1bf8c4..c8dee75 100644 --- a/lib/features/card/business_logic_layer/card_controller.dart +++ b/lib/features/card/business_logic_layer/card_controller.dart @@ -31,8 +31,7 @@ class CardController extends GetxController { }); } - Future addCard( - {void Function(void)? onSuccess, void Function(Object)? onError}) async { + Future addCard({void Function(void)? onSuccess, void Function(Object)? onError}) async { await addCardState.observe( (p0) async { await cardService.addCard(cardModel.value); @@ -47,14 +46,12 @@ class CardController extends GetxController { } //-------------get cards-----------// - RxFuture> cardState = - RxFuture(Pagination.zero()); + RxFuture> cardState = RxFuture(Pagination.zero()); Future getCards({void Function(Object e)? onConnectionError}) async { await cardState.observe((value) async { await value?.nextPage((currentPage) async { - List cards = await cardService.getCards( - page: currentPage, onConnectionError: onConnectionError); + List cards = await cardService.getCards(page: currentPage, onConnectionError: onConnectionError); if (cards.isEmpty) return []; return cards; @@ -85,22 +82,19 @@ class CardController extends GetxController { update(); await favoriteState.observe((p0) async { - removeFromFavorite - ? await cardService.removeFromFavorite(id) - : await cardService.addToFavorite(id); + removeFromFavorite ? await cardService.removeFromFavorite(id) : await cardService.addToFavorite(id); }, onSuccess: onSuccess, onError: onError); } ///-------------my cards------------/// RxFuture> myCardState = RxFuture(Pagination.zero()); - Future getMyCards(int userId, - {void Function(Object)? onConnectionError}) async { + Future getMyCards(int userId, {void Function(Object)? onConnectionError}) async { myCardState.result.clear(); await myCardState.observe((value) async { await value?.nextPage((currentPage) async { - List cards = await cardService.getMyCards(userId, - page: currentPage, onConnectionError: onConnectionError); + List cards = + await cardService.getMyCards(userId, page: currentPage, onConnectionError: onConnectionError); if (cards.isEmpty) return []; return cards; }); @@ -115,8 +109,7 @@ class CardController extends GetxController { Rx editCardModel = EditCardModel.zero().obs; RxFuture editCardState = RxFuture(null); - Future editCard(int cardId, - {void Function(void)? onSuccess, void Function(Object)? onError}) async { + Future editCard(int cardId, {void Function(void)? onSuccess, void Function(Object)? onError}) async { await editCardState.observe( (p0) async { await cardService.editCard(cardId, editCardModel.value); @@ -162,8 +155,7 @@ class CardController extends GetxController { Future updateNetworkImages(int cardId) async { networkImagesState.observe( (p0) async { - return cardModelNetworkImages.value = - await cardService.getCardImages(cardId); + return cardModelNetworkImages.value = await cardService.getCardImages(cardId); }, onSuccess: (cardImages) { cardModelNetworkImages.refresh(); @@ -176,8 +168,7 @@ class CardController extends GetxController { cardModel.refresh(); } - void deleteImage(int imageId, - {void Function(void)? onSuccess, required int cardId}) async { + void deleteImage(int imageId, {void Function(void)? onSuccess, required int cardId}) async { if (!addImagesState.loading) { deleteImageState.observe( (p0) async { @@ -226,8 +217,7 @@ class CardController extends GetxController { final Random random = Random(); RxFuture saveCardState = RxFuture(null); - saveNetworkImage(String imageUrl, - {void Function(Object)? onError, void Function(void)? onSuccess}) async { + saveNetworkImage(String imageUrl, {void Function(Object)? onError, void Function(void)? onSuccess}) async { saveCardState.observe((p0) async { Uint8List image = await cardService.downloadImage(imageUrl); await ImageGallerySaver.saveImage( @@ -247,4 +237,11 @@ class CardController extends GetxController { await Future.delayed(const Duration(seconds: 3)); }); } + + //----------rating----------// + RxInt currentIndex = 1.obs; + + void changeCurrentIndex(int index) { + currentIndex.value = index; + } } diff --git a/lib/features/card/data_layer/model/working_time.dart b/lib/features/card/data_layer/model/working_time.dart new file mode 100644 index 0000000..8d6f005 --- /dev/null +++ b/lib/features/card/data_layer/model/working_time.dart @@ -0,0 +1,11 @@ +class WorkingTimeModel { + String type; + String startTime; + String endTime; + + WorkingTimeModel({ + required this.type, + required this.startTime, + required this.endTime, + }); +} diff --git a/lib/features/card/presentation_layer/screens/card_details.dart b/lib/features/card/presentation_layer/screens/card_details.dart index 892755f..959ddcb 100644 --- a/lib/features/card/presentation_layer/screens/card_details.dart +++ b/lib/features/card/presentation_layer/screens/card_details.dart @@ -4,14 +4,20 @@ import 'package:get/get.dart'; import 'package:taafee_mobile/common/const/const.dart'; import 'package:taafee_mobile/common/extensions/widget_extension.dart'; import 'package:taafee_mobile/common/widgets/button.dart'; +import 'package:taafee_mobile/common/widgets/listview.dart'; import 'package:taafee_mobile/common/widgets/text.dart'; import 'package:taafee_mobile/core/routing/routing_manager.dart'; import 'package:taafee_mobile/core/utils/utils.dart'; +import 'package:taafee_mobile/features/card/presentation_layer/widgets/image.dart'; import 'package:taafee_mobile/features/card/business_logic_layer/card_controller.dart'; import 'package:taafee_mobile/features/card/data_layer/model/appointment.dart'; import 'package:taafee_mobile/features/card/presentation_layer/widgets/card_details.dart'; import 'package:taafee_mobile/features/card/presentation_layer/widgets/card_service.dart'; +import 'package:taafee_mobile/features/card/presentation_layer/widgets/consultation_price.dart'; +import 'package:taafee_mobile/features/card/presentation_layer/widgets/wording_time.dart'; import 'package:taafee_mobile/features/chat/business%20logic%20layer/chat_controller.dart'; +import 'package:url_launcher/url_launcher.dart'; +import 'package:wechat_assets_picker/wechat_assets_picker.dart'; import '../../../../common/widgets/header_screen.dart'; import '../../../../common/widgets/toast.dart'; import '../../../../core/url launcher/url_launcher_service.dart'; @@ -24,6 +30,10 @@ import '../widgets/card_header.dart'; import '../widgets/card_image.dart'; import '../widgets/card_information.dart'; import '../widgets/card_location.dart'; +import 'package:flutter_map/flutter_map.dart'; +import 'package:latlong2/latlong.dart' as location; + +import '../widgets/rate.dart'; class CardDetailsScreen extends StatelessWidget { final CardModel cardModel = Get.arguments; @@ -33,443 +43,433 @@ class CardDetailsScreen extends StatelessWidget { final ChatController chatController = Get.find(); @override Widget build(BuildContext context) { - void appointmentSchedulingDialog(BuildContext context) { - showDialog( - context: context, - builder: (BuildContext context) { - return AlertDialog( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20)), - contentPadding: EdgeInsets.zero, - actionsPadding: EdgeInsets.zero, - title: RegularTextWidget( - "available_times".tr, - fontSize: 14, - ), - content: Obx(() { - if (cardController.availableAppointmentsState.loading || - homeController.appointmentSchedulingState.loading) { - return SizedBox( - width: 320, - height: 320, - child: const CircularProgressIndicator().center()); - } - return SizedBox( - height: 320, - width: 320, - child: Column( - children: [ - const SizedBox( - height: 20, - ), - SizedBox( - height: 280, - child: ListView.builder( - physics: const BouncingScrollPhysics(), - itemCount: 12, - itemBuilder: (context, index) { - DateTime dateTime = Utils.generateRandomDateTime(); - return AppointmentWidget(dateTime: dateTime) - .paddingOnly(bottom: 16) - .onTap(() { - homeController.scheduleAnAppointment( - Appointment( - cardId: cardModel.id, - dateTime: dateTime, - user: homeController.user.value!), - onSuccess: () { - Toast.showToast( - 'appointment_scheduled_successfully.'.tr); - RoutingManager.back(); - }); - }); - }, - ).paddingOnly(left: 8, right: 8, top: 8, bottom: 8), - ), - const SizedBox( - height: 20, - ), - ], - ), - ); - }), - ); - }); - } - - void appointmentDialog(BuildContext context) { - showDialog( - context: context, - builder: (BuildContext context) { - return AlertDialog( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20)), - contentPadding: EdgeInsets.zero, - actionsPadding: EdgeInsets.zero, - title: HeaderScreen( - ' ${"appointment".tr}', - ), - content: AppointmentDetails( - appointment: homeController.currentCardAppointment.value!), - ); - }); - } - cardController.updateCardNetworkImageUrls(cardModel.cardImages); return Scaffold( + appBar: AppBar( + leadingWidth: homeController.isArabic.value ? 16 : 30, + leading: SizedBox( + child: Obx( + () => (!homeController.isArabic.value) + ? SvgPicture.asset( + "assets/icons/arrow-left.svg", + width: Responsive.isTablet() ? 20 : null, + ) + : SvgPicture.asset( + "assets/icons/arrow right.svg", + width: Responsive.isTablet() ? 20 : null, + ), + ), + ).paddingSymmetric(horizontal: 3).onTap( + () { + RoutingManager.back(); + }, + ), + centerTitle: true, + backgroundColor: Colors.white, + title: SizedBox( + width: 50, + height: 50, + child: SvgPicture.asset("assets/icons/tafee icon.svg"), + ), + ), backgroundColor: AppColors.backGroundColor, body: SingleChildScrollView( child: Column( children: [ - if (Responsive.isTablet()) - const SizedBox( - height: 30, - ), - HeaderScreen( - "page_details".tr, - additionalOnTap: () { - cardController.cardState.result.clear(); - cardController.getCards(); - }, - ) - .paddingOnly(top: 30, bottom: 30) - .paddingSymmetric(horizontal: Responsive.isTablet() ? 20 : 20), - if (Responsive.isTablet()) - const SizedBox( - height: 20, - ), - Container( - width: Get.width * .89, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(4), - color: Colors.white, - ), - child: Column( - crossAxisAlignment: Responsive.isTablet() - ? CrossAxisAlignment.start - : CrossAxisAlignment.center, - children: [ - CardHeaderWidget( - cardModel: cardModel, - isFromDetailsScreen: true, - ), - CardInformation(cardModel: cardModel) - .paddingSymmetric( - horizontal: Responsive.isTablet() ? 0 : 5, vertical: 5) - .paddingOnly( - left: homeController.isArabic.value ? 0 : 3, - right: homeController.isArabic.value ? 3 : 0, + Stack( + alignment: Alignment.topCenter, + children: [ + Column( + children: [ + Container( + width: Get.width, + height: 60, + decoration: BoxDecoration( + color: AppColors.secondaryColor, + borderRadius: const BorderRadius.only( + bottomLeft: Radius.circular(10), + bottomRight: Radius.circular(10), + ), ), - const SizedBox( - height: 8, - ), - CardEmailWidget( - cardModel: cardModel, - ).paddingSymmetric( - horizontal: 7, - ), - const SizedBox( - height: 8, - ), - CardLocationWidget( - cardModel: cardModel, - ).paddingSymmetric( - horizontal: 5, - vertical: 5, - ), - CardServiceWidget( - cardModel: cardModel, - maxLines: 4, - width: Get.width * 0.69, - ) - .paddingSymmetric( - horizontal: 5, - vertical: 5, - ) - .paddingOnly( - left: homeController.isArabic.value ? 0 : 8, - right: homeController.isArabic.value ? 8 : 0, - ) - .align( - alignment: homeController.isArabic.value - ? Alignment.centerRight - : Alignment.centerLeft), - CardDetailsWidget( - cardModel: cardModel, - ).paddingSymmetric(horizontal: Responsive.isTablet() ? 0 : 15), - if (cardModel.cardImages.isEmpty) - const SizedBox( - height: 8, - ), - if (cardModel.cardImages.isNotEmpty) - Divider( - color: AppColors.dividerColor, - thickness: 1, - ).paddingSymmetric(horizontal: 15), - if (cardModel.cardImages.isNotEmpty) - MediumTextWidget( - "images".tr, - textAlign: TextAlign.left, - ).paddingSymmetric(horizontal: 15).align( - alignment: homeController.isArabic.value - ? Alignment.centerRight - : Alignment.centerLeft), - if (cardModel.cardImages.isNotEmpty) - if (Responsive.isTablet()) - Row( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - CardImageWidget( - width: Get.width * 0.4, - height: Get.width * 0.4, - cardImages: cardModel.cardImages[0], - ).onTap(() { - cardController.changeImageIndex(0); - cardController.pageControllerInitialValue(0); - RoutingManager.to(RouteName.imagesGalleryView, - arguments: cardController.cardNetworkImagesUrls); - }), - if (cardModel.cardImages.length > 1) - SizedBox( - width: Get.width * 0.4, - height: Get.width * 0.4, - child: GridView.builder( - physics: const NeverScrollableScrollPhysics(), - itemCount: cardModel.cardImages.length - 1, - shrinkWrap: true, - gridDelegate: - SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: Responsive.isTablet() ? 2 : 3, - childAspectRatio: - Responsive.isTablet() ? 1 : 1.5, - ), - itemBuilder: (BuildContext context, index) { - return CardImageWidget( - cardImages: cardModel.cardImages[index + 1], - ).onTap(() { - cardController.changeImageIndex(index + 1); - cardController - .pageControllerInitialValue(index + 1); - RoutingManager.to(RouteName.imagesGalleryView, - arguments: - cardController.cardNetworkImagesUrls); - }); - }, + SvgPicture.asset("assets/icons/Share.svg"), + Row( + children: [ + const RegularTextWidget( + " 300 ", + color: Colors.white, ), - ), + SvgPicture.asset("assets/icons/Eye.svg"), + ], + ) + ], + ).paddingSymmetric(horizontal: 20), + ), + Container( + alignment: Alignment.bottomCenter, + width: Get.width, + height: 120, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(20), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + BoldTextWidget( + " ${cardModel.user.firstName} " + " ${cardModel.user.lastName} ", + fontSize: Responsive.isTablet() ? 22 : 14, + color: AppColors.textColor, + ), + ], + ), + MediumTextWidget( + cardModel.name, + fontSize: Responsive.isTablet() ? 22 : 14, + ), ], - ).paddingOnly(bottom: 20), - if (!Responsive.isTablet()) - GridView.builder( - physics: const NeverScrollableScrollPhysics(), - itemCount: cardModel.cardImages.length, - shrinkWrap: true, - gridDelegate: - const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - childAspectRatio: 1.5, ), - itemBuilder: (BuildContext context, index) { - return CardImageWidget( - cardImages: cardModel.cardImages[index], - ).onTap(() { - cardController.changeImageIndex(index); - cardController.pageControllerInitialValue(index); - RoutingManager.to(RouteName.imagesGalleryView, - arguments: cardController.cardNetworkImagesUrls); - }); - }, ) + ], + ), + CircleAvatar( + radius: 60, + backgroundColor: AppColors.secondaryColor, + ), + const Positioned( + top: 15, + child: CircleAvatar( + radius: 50, + backgroundImage: AssetImage( + "assets/images/Ellipse 8.png", + ), + ), + ), + ], + ), + const SizedBox( + height: 20, + ), + SizedBox( + width: Get.width * .92, + height: 75, + child: ListViewWidget( + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.horizontal, + itemCount: 4, + childBuilder: (index) { + if (index == 3) { + return const ImageWidget( + numberOfImages: 5, + ).onTap(() { + RoutingManager.to(RouteName.imageView); + }); + } + return const ImageWidget(numberOfImages: 1); + }, + ), + ), + const SizedBox( + height: 20, + ), + ConsultationPriceWidget( + cardModel: cardModel, + ), + const SizedBox( + height: 20, + ), + WorkingTimeWidget(), + const SizedBox( + height: 20, + ), + RateWidget(), + const SizedBox( + height: 20, + ), + SizedBox( + width: Get.width * .89, + height: 150, + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(8), + // ), + child: FlutterMap( + options: MapOptions( + center: const location.LatLng(51.509364, -0.128928), + ), + children: [ + TileLayer( + urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', + userAgentPackageName: 'com.example.app', + ), + // RichAttributionWidget( + // attributions: [ + // TextSourceAttribution( + // 'OpenStreetMap contributors', + // onTap: () => launchUrl(Uri.parse('https://openstreetmap.org/copyright')), + // ), + // ], + // ), ], ), ), const SizedBox( - height: 40, + height: 20, + ), + Container( + width: Get.width * .89, + height: 100, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const RegularTextWidget( + "Information about the doctor", + color: Colors.grey, + fontSize: 14, + ).paddingSymmetric(horizontal: 30), + RegularTextWidget(cardModel.additionalData).paddingSymmetric(horizontal: 10, vertical: 5) + ], + ), ), - Row( - children: [ - ButtonWidget( - color: AppColors.callColor, - haveIcon: true, - onTap: () async { - await UrlLauncherService.makePhoneCall(cardModel.phoneNumber); - }, - title: "call_owner".tr, - textColor: Colors.white, - child: SvgPicture.asset( - "assets/icons/phone.svg", - colorFilter: - const ColorFilter.mode(Colors.white, BlendMode.srcIn), - ), - ) - .paddingSymmetric(horizontal: 4) - .expanded(Responsive.isTablet() ? 1 : 5), - ButtonWidget( - color: AppColors.emailColor, - haveIcon: true, - onTap: () async { - await UrlLauncherService.sendEmail(cardModel.user.email); - }, - title: "email".tr, - textColor: Colors.white, - child: SvgPicture.asset("assets/icons/Email.svg"), - ) - .paddingSymmetric(horizontal: 4) - .expanded(Responsive.isTablet() ? 1 : 5), - if (Responsive.isTablet()) - Visibility( - visible: - chatController.chatUser.id != cardModel.user.chatUserId, - child: Obx(() { - return ButtonWidget( - isLoading: chatController.createRoomState.loading, - textColor: Colors.white, - color: AppColors.messageColor, - haveIcon: true, - onTap: () { - if (chatController.connectionState.value == - SocketConnectionState.connected) { - chatController.createRoom( - chatUserId: cardModel.user.chatUserId, - onSuccess: (room) { - RoutingManager.to(RouteName.chatDetails, - arguments: { - "room": room, - }); - }); - } else { - Toast.showToast( - 'you_have_no_internet_connection.'.tr); - } - }, - title: "start_conversation".tr, - fontSize: 13, - child: SvgPicture.asset("assets/icons/message.svg"), - ).expanded(Responsive.isTablet() ? 1 : 5); - }), - ), - if (Responsive.isTablet()) - Obx(() { - return Visibility( - visible: homeController.user.value!.id != cardModel.user.id, - child: (homeController.currentCardAppointment.value != null) - ? ButtonWidget( - haveIcon: true, - onTap: () { - appointmentDialog(context); - }, - fontSize: 13, - color: AppColors.secondaryColor, - title: 'you_have_an_appointment'.tr, - child: const Icon( - Icons.schedule, - color: Colors.white, - ), - ) - .paddingSymmetric(horizontal: 4) - .expanded(Responsive.isTablet() ? 1 : 5) - : ButtonWidget( - onTap: () { - cardController.getAvailableAppointments(); - appointmentSchedulingDialog(context); - }, - haveIcon: true, - fontSize: 12, - title: 'schedule_an_appointment'.tr, - color: AppColors.secondaryColor, - child: const Icon( - Icons.schedule, - color: Colors.white, - ), - ) - .paddingSymmetric(horizontal: 4) - .expanded(Responsive.isTablet() ? 1 : 5), - ); - }), - ], - ).paddingSymmetric( - vertical: Responsive.isTablet() ? 20 : 4, - horizontal: Responsive.isTablet() ? 40 : 10), - if (!Responsive.isTablet()) - Obx(() { - return Row( - children: [ - Obx(() { - return Visibility( - visible: - homeController.user.value!.id != cardModel.user.id, - child: - (homeController.currentCardAppointment.value != null) - ? ButtonWidget( - haveIcon: true, - onTap: () { - appointmentDialog(context); - }, - fontSize: 12, - color: AppColors.secondaryColor, - title: 'you_have_an_appointment'.tr, - child: const Icon( - Icons.schedule, - color: Colors.white, - ), - ) - .paddingSymmetric(horizontal: 4) - .expanded(Responsive.isTablet() ? 1 : 5) - : ButtonWidget( - onTap: () { - cardController.getAvailableAppointments(); - appointmentSchedulingDialog(context); - }, - haveIcon: true, - fontSize: 12, - title: 'schedule_an_appointment'.tr, - color: AppColors.secondaryColor, - child: const Icon( - Icons.schedule, - color: Colors.white, - ), - ) - .paddingSymmetric(horizontal: 4) - .expanded(Responsive.isTablet() ? 1 : 5), - ); - }), - Visibility( - visible: - chatController.chatUser.id != cardModel.user.chatUserId, - child: ButtonWidget( - isLoading: chatController.createRoomState.loading, - textColor: Colors.white, - color: AppColors.messageColor, - haveIcon: true, - onTap: () { - if (chatController.connectionState.value == - SocketConnectionState.connected) { - chatController.createRoom( - chatUserId: cardModel.user.chatUserId, - onSuccess: (room) { - RoutingManager.to(RouteName.chatDetails, - arguments: {"room": room}); - }); - } else { - Toast.showToast('you_have_no_internet_connection'.tr); - } - }, - title: "start_conversation".tr, - fontSize: 12, - child: SvgPicture.asset("assets/icons/message.svg"), - ) - .paddingSymmetric(horizontal: 4) - .expanded(Responsive.isTablet() ? 1 : 5), - ), - ], - ).paddingSymmetric( - vertical: Responsive.isTablet() ? 20 : 4, - horizontal: Responsive.isTablet() ? 40 : 10); - }), const SizedBox( - height: 60, + height: 20, ), + // Row( + // children: [ + // ButtonWidget( + // color: AppColors.callColor, + // haveIcon: true, + // onTap: () async { + // await UrlLauncherService.makePhoneCall(cardModel.phoneNumber); + // }, + // title: "call_owner".tr, + // textColor: Colors.white, + // child: SvgPicture.asset( + // "assets/icons/phone.svg", + // colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn), + // ), + // ).paddingSymmetric(horizontal: 4).expanded(Responsive.isTablet() ? 1 : 5), + // ButtonWidget( + // color: AppColors.emailColor, + // haveIcon: true, + // onTap: () async { + // await UrlLauncherService.sendEmail(cardModel.user.email); + // }, + // title: "email".tr, + // textColor: Colors.white, + // child: SvgPicture.asset("assets/icons/Email.svg"), + // ).paddingSymmetric(horizontal: 4).expanded(Responsive.isTablet() ? 1 : 5), + // if (Responsive.isTablet()) + // Visibility( + // visible: chatController.chatUser.id != cardModel.user.chatUserId, + // child: Obx(() { + // return ButtonWidget( + // isLoading: chatController.createRoomState.loading, + // textColor: Colors.white, + // color: AppColors.messageColor, + // haveIcon: true, + // onTap: () { + // if (chatController.connectionState.value == SocketConnectionState.connected) { + // chatController.createRoom( + // chatUserId: cardModel.user.chatUserId, + // onSuccess: (room) { + // RoutingManager.to(RouteName.chatDetails, arguments: { + // "room": room, + // }); + // }); + // } else { + // Toast.showToast('you_have_no_internet_connection.'.tr); + // } + // }, + // title: "start_conversation".tr, + // fontSize: 13, + // child: SvgPicture.asset("assets/icons/message.svg"), + // ).expanded(Responsive.isTablet() ? 1 : 5); + // }), + // ), + // if (Responsive.isTablet()) + // Obx(() { + // return Visibility( + // visible: homeController.user.value!.id != cardModel.user.id, + // child: (homeController.currentCardAppointment.value != null) + // ? ButtonWidget( + // haveIcon: true, + // onTap: () { + // appointmentDialog(context); + // }, + // fontSize: 13, + // color: AppColors.secondaryColor, + // title: 'you_have_an_appointment'.tr, + // child: const Icon( + // Icons.schedule, + // color: Colors.white, + // ), + // ).paddingSymmetric(horizontal: 4).expanded(Responsive.isTablet() ? 1 : 5) + // : ButtonWidget( + // onTap: () { + // cardController.getAvailableAppointments(); + // appointmentSchedulingDialog(context); + // }, + // haveIcon: true, + // fontSize: 12, + // title: 'schedule_an_appointment'.tr, + // color: AppColors.secondaryColor, + // child: const Icon( + // Icons.schedule, + // color: Colors.white, + // ), + // ).paddingSymmetric(horizontal: 4).expanded(Responsive.isTablet() ? 1 : 5), + // ); + // }), + // ], + // ).paddingSymmetric(vertical: Responsive.isTablet() ? 20 : 4, horizontal: Responsive.isTablet() ? 40 : 10), + // if (!Responsive.isTablet()) + // Obx(() { + // return Row( + // children: [ + // Obx(() { + // return Visibility( + // visible: homeController.user.value!.id != cardModel.user.id, + // child: (homeController.currentCardAppointment.value != null) + // ? ButtonWidget( + // haveIcon: true, + // onTap: () { + // appointmentDialog(context); + // }, + // fontSize: 12, + // color: AppColors.secondaryColor, + // title: 'you_have_an_appointment'.tr, + // child: const Icon( + // Icons.schedule, + // color: Colors.white, + // ), + // ).paddingSymmetric(horizontal: 4).expanded(Responsive.isTablet() ? 1 : 5) + // : ButtonWidget( + // onTap: () { + // cardController.getAvailableAppointments(); + // appointmentSchedulingDialog(context); + // }, + // haveIcon: true, + // fontSize: 12, + // title: 'schedule_an_appointment'.tr, + // color: AppColors.secondaryColor, + // child: const Icon( + // Icons.schedule, + // color: Colors.white, + // ), + // ).paddingSymmetric(horizontal: 4).expanded(Responsive.isTablet() ? 1 : 5), + // ); + // }), + // Visibility( + // visible: chatController.chatUser.id != cardModel.user.chatUserId, + // child: ButtonWidget( + // isLoading: chatController.createRoomState.loading, + // textColor: Colors.white, + // color: AppColors.messageColor, + // haveIcon: true, + // onTap: () { + // if (chatController.connectionState.value == SocketConnectionState.connected) { + // chatController.createRoom( + // chatUserId: cardModel.user.chatUserId, + // onSuccess: (room) { + // RoutingManager.to(RouteName.chatDetails, arguments: {"room": room}); + // }); + // } else { + // Toast.showToast('you_have_no_internet_connection'.tr); + // } + // }, + // title: "start_conversation".tr, + // fontSize: 12, + // child: SvgPicture.asset("assets/icons/message.svg"), + // ).paddingSymmetric(horizontal: 4).expanded(Responsive.isTablet() ? 1 : 5), + // ), + // ], + // ).paddingSymmetric(vertical: Responsive.isTablet() ? 20 : 4, horizontal: Responsive.isTablet() ? 40 : 10); + // }), + // const SizedBox( + // height: 60, + // ), ], ).paddingSymmetric(horizontal: Responsive.isTablet() ? 20 : 0)), ).makeSafeArea(); } + + void appointmentSchedulingDialog(BuildContext context) { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + contentPadding: EdgeInsets.zero, + actionsPadding: EdgeInsets.zero, + title: RegularTextWidget( + "available_times".tr, + fontSize: 14, + ), + content: Obx(() { + if (cardController.availableAppointmentsState.loading || + homeController.appointmentSchedulingState.loading) { + return SizedBox(width: 320, height: 320, child: const CircularProgressIndicator().center()); + } + return SizedBox( + height: 320, + width: 320, + child: Column( + children: [ + const SizedBox( + height: 20, + ), + SizedBox( + height: 280, + child: ListView.builder( + physics: const BouncingScrollPhysics(), + itemCount: 12, + itemBuilder: (context, index) { + DateTime dateTime = Utils.generateRandomDateTime(); + return AppointmentWidget(dateTime: dateTime).paddingOnly(bottom: 16).onTap(() { + homeController.scheduleAnAppointment( + Appointment(cardId: cardModel.id, dateTime: dateTime, user: homeController.user.value!), + onSuccess: () { + Toast.showToast('appointment_scheduled_successfully.'.tr); + RoutingManager.back(); + }); + }); + }, + ).paddingOnly(left: 8, right: 8, top: 8, bottom: 8), + ), + const SizedBox( + height: 20, + ), + ], + ), + ); + }), + ); + }); + } + + void appointmentDialog(BuildContext context) { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + contentPadding: EdgeInsets.zero, + actionsPadding: EdgeInsets.zero, + title: HeaderScreen( + ' ${"appointment".tr}', + ), + content: AppointmentDetails(appointment: homeController.currentCardAppointment.value!), + ); + }); + } } diff --git a/lib/features/card/presentation_layer/screens/feedback.dart b/lib/features/card/presentation_layer/screens/feedback.dart new file mode 100644 index 0000000..e5d5869 --- /dev/null +++ b/lib/features/card/presentation_layer/screens/feedback.dart @@ -0,0 +1,31 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:taafee_mobile/common/extensions/widget_extension.dart'; +import 'package:taafee_mobile/common/widgets/header_screen.dart'; +import 'package:taafee_mobile/common/widgets/listview.dart'; +import 'package:taafee_mobile/features/card/presentation_layer/widgets/feedback_widget.dart'; + +class FeedbackScreen extends StatelessWidget { + const FeedbackScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Column( + children: [ + HeaderScreen( + "Feedback", + ).paddingOnly(top: 20), + SizedBox( + width: Get.width, + child: ListViewWidget( + itemCount: 10, + childBuilder: (index) { + return const FeedbackWidget(); + }), + ) + ], + ), + ).makeSafeArea(); + } +} diff --git a/lib/features/card/presentation_layer/screens/images_view.dart b/lib/features/card/presentation_layer/screens/images_view.dart new file mode 100644 index 0000000..82f70ae --- /dev/null +++ b/lib/features/card/presentation_layer/screens/images_view.dart @@ -0,0 +1,48 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:taafee_mobile/common/extensions/widget_extension.dart'; +import 'package:taafee_mobile/common/widgets/header_screen.dart'; + +class ImagesViewScreen extends StatelessWidget { + final List images = [ + "assets/images/download.jpg", + "assets/images/download.jpg", + "assets/images/download.jpg", + "assets/images/download.jpg", + "assets/images/download.jpg" + ]; + ImagesViewScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Column( + children: [ + HeaderScreen( + "Images", + ).paddingOnly(top: 20), + Expanded( + child: SizedBox( + width: Get.width, + child: PageView.builder( + itemCount: images.length, + itemBuilder: (BuildContext context, index) { + return Container( + width: Get.width, + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage( + images[index], + ), + ), + ), + ); + }, + ), + ), + ), + ], + ), + ).makeSafeArea(); + } +} diff --git a/lib/features/card/presentation_layer/screens/review_form.dart b/lib/features/card/presentation_layer/screens/review_form.dart new file mode 100644 index 0000000..bb20143 --- /dev/null +++ b/lib/features/card/presentation_layer/screens/review_form.dart @@ -0,0 +1,85 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_rating_bar/flutter_rating_bar.dart'; +import 'package:get/get.dart'; +import 'package:taafee_mobile/common/const/const.dart'; +import 'package:taafee_mobile/common/extensions/widget_extension.dart'; +import 'package:taafee_mobile/common/widgets/button.dart'; +import 'package:taafee_mobile/common/widgets/header_screen.dart'; +import 'package:taafee_mobile/common/widgets/text.dart'; +import 'package:taafee_mobile/common/widgets/textfiled.dart'; + +import '../../../../core/routing/routing_manager.dart'; + +class ReviewFormScreen extends StatelessWidget { + const ReviewFormScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + HeaderScreen( + "Add Rating", + ).paddingOnly(top: 20), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const RegularTextWidget( + "Rate this user", + color: Colors.black, + ), + const RegularTextWidget("What you think about this user?").paddingSymmetric(vertical: 10), + Container( + width: Get.width, + alignment: Alignment.center, + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10), + decoration: BoxDecoration( + color: Colors.grey.withOpacity(0.5), + borderRadius: BorderRadius.circular(20), + ), + child: RatingBar.builder( + unratedColor: Colors.grey, + initialRating: 0, + minRating: 1, + itemSize: 40, + direction: Axis.horizontal, + allowHalfRating: false, + glow: false, + itemCount: 5, + // glowColor: , + itemPadding: const EdgeInsets.symmetric(horizontal: 8.0), + itemBuilder: (context, _) => const Icon( + Icons.star_rounded, + color: Colors.amber, + ), + onRatingUpdate: (rating) {}, + ), + ), + TextFieldWidget( + maxLines: 7, + textInputAction: TextInputAction.newline, + onChange: (value) {}, + keyboardType: TextInputType.multiline, + label: "", + validate: (value) { + return null; + }, + height: Get.height * .3, + ).paddingOnly(top: 30), + ButtonWidget( + onTap: () { + RoutingManager.back(); + }, + title: "Done", + width: Get.width * .3, + ).center() + ], + ).paddingSymmetric(horizontal: 30, vertical: 20), + ], + ), + ), + ).makeSafeArea(); + } +} diff --git a/lib/features/card/presentation_layer/widgets/card_service.dart b/lib/features/card/presentation_layer/widgets/card_service.dart index b1f9730..81c48e6 100644 --- a/lib/features/card/presentation_layer/widgets/card_service.dart +++ b/lib/features/card/presentation_layer/widgets/card_service.dart @@ -11,8 +11,7 @@ class CardServiceWidget extends StatelessWidget { final HomeController homeController = Get.find(); final int maxLines; final double? width; - CardServiceWidget( - {super.key, required this.cardModel, this.maxLines = 1, this.width}); + CardServiceWidget({super.key, required this.cardModel, this.maxLines = 1, this.width}); @override Widget build(BuildContext context) { @@ -20,18 +19,15 @@ class CardServiceWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, //mainAxisSize: MainAxisSize.min, children: [ - MediumTextWidget("${'service'.tr} : "), + MediumTextWidget("${'description'.tr} : "), //width: Responsive.isTablet() ? Get.width * 0.3 : null, SizedBox( - width: width ?? - (Responsive.isTablet() ? Get.width * 0.3 : Get.width * 0.669), + width: width ?? (Responsive.isTablet() ? Get.width * 0.3 : Get.width * 0.65), child: RegularTextWidget( cardModel.services, maxLines: maxLines, - textAlign: homeController.isArabic.value - ? TextAlign.right - : TextAlign.left, + textAlign: homeController.isArabic.value ? TextAlign.right : TextAlign.left, overflow: TextOverflow.ellipsis, ).paddingOnly( right: Responsive.isTablet() ? 0 : 10, diff --git a/lib/features/card/presentation_layer/widgets/consultation_price.dart b/lib/features/card/presentation_layer/widgets/consultation_price.dart new file mode 100644 index 0000000..5980a88 --- /dev/null +++ b/lib/features/card/presentation_layer/widgets/consultation_price.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:get/get.dart'; +import 'package:taafee_mobile/common/const/const.dart'; +import 'package:taafee_mobile/common/extensions/widget_extension.dart'; +import 'package:taafee_mobile/common/widgets/text.dart'; +import 'package:taafee_mobile/features/card/data_layer/model/card_model.dart'; + +import '../../../../core/url launcher/url_launcher_service.dart'; + +class ConsultationPriceWidget extends StatelessWidget { + final CardModel cardModel; + const ConsultationPriceWidget({ + super.key, + required this.cardModel, + }); + + @override + Widget build(BuildContext context) { + return Container( + width: Get.width * .89, + height: 80, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + RegularTextWidget( + "consultation price:".tr, + fontSize: 16, + color: Colors.grey, + ), + BoldTextWidget( + "400 SP".tr, + fontSize: 20, + color: Colors.grey, + ), + ], + ), + Row( + children: [ + Container( + alignment: Alignment.center, + width: 90, + height: 35, + decoration: BoxDecoration( + color: AppColors.secondaryColor, + borderRadius: BorderRadius.circular(30), + ), + child: const RegularTextWidget( + "Call", + color: Colors.white, + fontSize: 14, + ), + ).onTap(() async { + await UrlLauncherService.makePhoneCall(cardModel.phoneNumber); + }).paddingSymmetric(horizontal: 10), + SvgPicture.asset("assets/icons/whatsapp (1).svg").onTap( + () async { + await UrlLauncherService.sendWhatsapp("+963 940903459"); + }, + ), + ], + ) + ], + ).paddingSymmetric(horizontal: 10), + ); + } +} diff --git a/lib/features/card/presentation_layer/widgets/feedback_widget.dart b/lib/features/card/presentation_layer/widgets/feedback_widget.dart new file mode 100644 index 0000000..45c7b77 --- /dev/null +++ b/lib/features/card/presentation_layer/widgets/feedback_widget.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:taafee_mobile/common/widgets/text.dart'; + +class FeedbackWidget extends StatelessWidget { + const FeedbackWidget({super.key}); + + @override + Widget build(BuildContext context) { + return const Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + RegularTextWidget( + "Zakoor", + fontSize: 16, + ), + RegularTextWidget( + "ggggggggggggggggggg", + fontSize: 14, + ), + ], + ).paddingSymmetric(horizontal: 20, vertical: 8); + } +} diff --git a/lib/features/card/presentation_layer/widgets/image.dart b/lib/features/card/presentation_layer/widgets/image.dart new file mode 100644 index 0000000..e8cb3b8 --- /dev/null +++ b/lib/features/card/presentation_layer/widgets/image.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:taafee_mobile/common/extensions/widget_extension.dart'; +import 'package:taafee_mobile/common/widgets/text.dart'; + +class ImageWidget extends StatelessWidget { + final int numberOfImages; + const ImageWidget({ + super.key, + required this.numberOfImages, + }); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 5), + width: Get.width * .2, + height: Get.width * .2, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + image: const DecorationImage( + image: AssetImage("assets/images/download.jpg"), + fit: BoxFit.cover, + ), + ), + child: numberOfImages > 4 + ? BoldTextWidget( + "+$numberOfImages", + fontSize: 24, + color: Colors.white, + ).center() + : Container(), + ); + } +} diff --git a/lib/features/card/presentation_layer/widgets/my_card.dart b/lib/features/card/presentation_layer/widgets/my_card.dart index 186f64d..0bda3b3 100644 --- a/lib/features/card/presentation_layer/widgets/my_card.dart +++ b/lib/features/card/presentation_layer/widgets/my_card.dart @@ -20,8 +20,7 @@ class MyCardWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - margin: EdgeInsets.symmetric( - horizontal: Responsive.isTablet() ? 2 : 20, vertical: 10), + margin: EdgeInsets.symmetric(horizontal: Responsive.isTablet() ? 2 : 20, vertical: 10), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(4), diff --git a/lib/features/card/presentation_layer/widgets/rate.dart b/lib/features/card/presentation_layer/widgets/rate.dart new file mode 100644 index 0000000..4e7444e --- /dev/null +++ b/lib/features/card/presentation_layer/widgets/rate.dart @@ -0,0 +1,244 @@ +import 'dart:developer'; + +import 'package:animated_rating_stars/animated_rating_stars.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:taafee_mobile/common/extensions/widget_extension.dart'; +import 'package:taafee_mobile/common/widgets/button.dart'; +import 'package:taafee_mobile/common/widgets/text.dart'; +import 'package:taafee_mobile/core/routing/routing_manager.dart'; +import 'package:taafee_mobile/features/card/business_logic_layer/card_controller.dart'; +import 'package:taafee_mobile/features/card/presentation_layer/widgets/star.dart'; +import 'package:taafee_mobile/features/card/presentation_layer/widgets/view_ratings.dart'; + +import '../../../../common/const/const.dart'; +import '../../../../common/widgets/textfiled.dart'; + +class RateWidget extends StatelessWidget { + final CardController cardController = Get.find(); + RateWidget({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + width: Get.width * .89, + height: 150, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const RegularTextWidget("Rates"), + Container( + alignment: Alignment.center, + width: 100, + height: 25, + decoration: BoxDecoration( + color: AppColors.primeColor, + borderRadius: BorderRadius.circular(25), + ), + child: RegularTextWidget( + "Rate Now".tr, + color: Colors.white, + ), + ).onTap(() { + RoutingManager.to(RouteName.reviewForm); + }), + ], + ).paddingSymmetric(horizontal: 20, vertical: 5), + const ViewRatingsWidget(), + ], + ), + + // child: Column( + // children: [ + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // Row( + // children: [ + // RegularTextWidget("Number of users who rate this : ".tr), + // RegularTextWidget("10".tr), + // ], + // ), + // Container( + // alignment: Alignment.center, + // width: 100, + // height: 25, + // decoration: BoxDecoration( + // color: AppColors.primeColor, + // borderRadius: BorderRadius.circular(25), + // ), + // child: RegularTextWidget( + // "Rate Now".tr, + // color: Colors.white, + // ), + // ).onTap(() { + // dialog(); + // cardController.currentIndex(0); + // }) + // ], + // ), + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // Column( + // children: [ + // const Stack( + // alignment: Alignment.center, + // children: [ + // StarWidget(maxRating: 1, starSize: 60, readOnly: true), + // RegularTextWidget( + // "2.5", + // color: Colors.black, + // ), + // ], + // ), + // RegularTextWidget("Waiting".tr), + // ], + // ), + // Column( + // children: [ + // const Stack( + // alignment: Alignment.center, + // children: [ + // StarWidget(maxRating: 1, starSize: 60, readOnly: true), + // RegularTextWidget( + // "2.5", + // color: Colors.black, + // ), + // ], + // ), + // RegularTextWidget("Performance".tr), + // ], + // ), + // Column( + // children: [ + // const Stack( + // alignment: Alignment.center, + // children: [ + // StarWidget(maxRating: 1, starSize: 60, readOnly: true), + // RegularTextWidget( + // "2.5", + // color: Colors.black, + // ), + // ], + // ), + // RegularTextWidget("Price".tr), + // ], + // ) + // ], + // ).paddingOnly(top: 10).paddingSymmetric(horizontal: 20), + // ], + // ).paddingSymmetric(horizontal: 10, vertical: 10), + ).onTap(() { + RoutingManager.to(RouteName.feedback); + log("message"); + }); + } + + final PageController pageController = PageController(); + final List rate = [ + "waiting?", + "Performance?", + "Price?", + "Feedback", + ]; + final List stars = [ + const StarWidget(maxRating: 5, starSize: 30, readOnly: false), + const StarWidget(maxRating: 5, starSize: 30, readOnly: false), + const StarWidget(maxRating: 5, starSize: 30, readOnly: false), + + Container( + alignment: Alignment.topCenter, + width: Get.width * .5, + height: 55, + child: TextFormField( + onChanged: (value) {}, + maxLines: 4, + textInputAction: TextInputAction.newline, + keyboardType: TextInputType.multiline, + ), + ), + // TextFieldWidget( + // keyboardType: TextInputType.multiline, + // label: "", + // onChange: (value) {}, + // maxLines: 5, + // textInputAction: TextInputAction.newline, + // validate: (p0) { + // return null; + // }, + // ), + ]; + void dialog() { + Get.defaultDialog( + onWillPop: () async { + cardController.currentIndex(0); + return true; + }, + confirm: Obx(() { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + RegularTextWidget( + "back".tr, + color: Colors.black, + ).onTap(() { + if (cardController.currentIndex.value == 0) { + RoutingManager.back(); + } + pageController.animateToPage(cardController.currentIndex.value - 1, + duration: const Duration(milliseconds: 250), curve: Curves.easeIn); + }), + ButtonWidget( + width: 80, + onTap: () { + if (cardController.currentIndex.value == 3) { + RoutingManager.back(); + } + pageController.animateToPage(cardController.currentIndex.value + 1, + duration: const Duration(milliseconds: 250), curve: Curves.easeIn); + }, + title: cardController.currentIndex.value == 3 ? "OK".tr : "Next".tr), + ], + ).paddingSymmetric(horizontal: 20); + }), + backgroundColor: Colors.white, + title: "", + middleText: "", + content: SizedBox( + width: Get.width * .5, + height: Get.height * .15, + child: PageView.builder( + physics: const BouncingScrollPhysics(), + controller: pageController, + onPageChanged: (value) { + cardController.changeCurrentIndex(value); + }, + itemCount: 4, + itemBuilder: (BuildContext context, index) { + return Column( + children: [ + BoldTextWidget(rate[index].tr).paddingOnly(bottom: 30), + + stars[index], + // SizedBox( + // width: Get.width * .8, + // child: RegularTextWidget( + // textAlign: TextAlign.center, + // text[index].tr, + // color: Colors.black, + // ), + // ) + ], + ); + }, + ), + )); + } +} diff --git a/lib/features/card/presentation_layer/widgets/star.dart b/lib/features/card/presentation_layer/widgets/star.dart new file mode 100644 index 0000000..80df950 --- /dev/null +++ b/lib/features/card/presentation_layer/widgets/star.dart @@ -0,0 +1,41 @@ +import 'package:animated_rating_stars/animated_rating_stars.dart'; +import 'package:flutter/material.dart'; + +class StarWidget extends StatelessWidget { + final double maxRating; + final double starSize; + final bool readOnly; + const StarWidget({ + super.key, + required this.maxRating, + required this.starSize, + required this.readOnly, + }); + + @override + Widget build(BuildContext context) { + return AnimatedRatingStars( + initialRating: 1, + minRating: 0, + maxRating: maxRating, + filledColor: Colors.amber, + emptyColor: Colors.grey, + filledIcon: Icons.star_border_rounded, + halfFilledIcon: Icons.star_half_rounded, + emptyIcon: Icons.star_border_rounded, + onChanged: (double rating) { + // Handle the rating change here + print('Rating: $rating'); + }, + displayRatingValue: true, + interactiveTooltips: true, + customFilledIcon: Icons.star_border_rounded, + customHalfFilledIcon: Icons.star_half_rounded, + customEmptyIcon: Icons.star_border_rounded, + starSize: starSize, + animationDuration: const Duration(milliseconds: 300), + animationCurve: Curves.easeInOut, + readOnly: readOnly, + ); + } +} diff --git a/lib/features/card/presentation_layer/widgets/view_ratings.dart b/lib/features/card/presentation_layer/widgets/view_ratings.dart new file mode 100644 index 0000000..2967fac --- /dev/null +++ b/lib/features/card/presentation_layer/widgets/view_ratings.dart @@ -0,0 +1,85 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_rating_bar/flutter_rating_bar.dart'; +import 'package:get/get.dart'; +import 'package:percent_indicator/linear_percent_indicator.dart'; +import 'package:taafee_mobile/common/const/const.dart'; +import 'package:taafee_mobile/common/widgets/listview.dart'; +import 'package:taafee_mobile/common/widgets/text.dart'; + +class ViewRatingsWidget extends StatelessWidget { + const ViewRatingsWidget({super.key}); + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Column( + children: [ + Container( + alignment: Alignment.center, + width: 75, + height: 75, + decoration: BoxDecoration( + color: AppColors.primeColor, + shape: BoxShape.circle, + ), + child: const BoldTextWidget( + "5.0", + fontSize: 24, + color: Colors.white, + ), + ), + RatingBar.builder( + itemSize: 15, + initialRating: 3.5, + minRating: 1, + direction: Axis.horizontal, + allowHalfRating: true, + itemCount: 5, + itemPadding: const EdgeInsets.symmetric(horizontal: 2), + itemBuilder: (context, _) => const Icon( + Icons.star, + color: Colors.amber, + ), + onRatingUpdate: (rating) { + print(rating); + }, + ignoreGestures: true, + ) + ], + ).paddingSymmetric(horizontal: 10), + Expanded( + child: Container( + child: ListViewWidget( + itemCount: 5, + childBuilder: (index) { + return Row( + children: [ + Container( + width: 30, + alignment: Alignment.center, + child: RegularTextWidget( + (index + 1).toString(), + ), + ), + Expanded( + child: LinearPercentIndicator( + key: UniqueKey(), + animation: true, + // lineHeight: 10, + animationDuration: 600, + percent: 1, + backgroundColor: Colors.red, + progressColor: Colors.blue, + ), + ), + ], + ); + }, + ), + ), + ), + ], + ).paddingSymmetric(horizontal: 10, vertical: 10); + } +} diff --git a/lib/features/card/presentation_layer/widgets/wording_time.dart b/lib/features/card/presentation_layer/widgets/wording_time.dart new file mode 100644 index 0000000..a4ed41b --- /dev/null +++ b/lib/features/card/presentation_layer/widgets/wording_time.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:taafee_mobile/features/card/data_layer/model/working_time.dart'; + +import '../../../../common/const/const.dart'; +import '../../../../common/widgets/listview.dart'; +import '../../../../common/widgets/text.dart'; + +class WorkingTimeWidget extends StatelessWidget { + final List list = [ + WorkingTimeModel(type: "Sunday", startTime: "8:00", endTime: "10:00"), + WorkingTimeModel(type: "Monday", startTime: "8:00", endTime: "10:00"), + WorkingTimeModel(type: "Sunday", startTime: "8:00", endTime: "10:00"), + ]; + WorkingTimeWidget({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + width: Get.width * .89, + height: 270, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + ), + child: Stack( + children: [ + const BoldTextWidget( + "working time", + color: Colors.grey, + ).paddingSymmetric(horizontal: 20), + ListViewWidget( + physics: const BouncingScrollPhysics(), + itemCount: 8, + scrollDirection: Axis.horizontal, + childBuilder: (index) { + return Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + const RegularTextWidget("8:00"), + Expanded( + child: Container( + width: 1, + color: AppColors.dividerColor, + ), + ), + ], + ).paddingSymmetric(horizontal: 10); + }).paddingOnly(top: 25), + SizedBox( + width: Get.width * .89, + child: ListViewWidget( + itemCount: list.length, + childBuilder: (index) { + return SizedBox( + width: Get.width * .89, + height: 42, + child: ListViewWidget( + padding: const EdgeInsets.only(top: 20), + scrollDirection: Axis.horizontal, + itemCount: list.length, + childBuilder: (index) { + return Container( + alignment: Alignment.center, + margin: const EdgeInsets.symmetric(horizontal: 10), + width: 100, + decoration: BoxDecoration( + color: AppColors.secondaryColor, + borderRadius: BorderRadius.circular(25), + ), + child: RegularTextWidget( + list[index].type, + color: Colors.white, + ), + ); + }), + ); + }), + ).paddingOnly(top: 30) + ], + )); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 1d568f8..0a88514 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -65,6 +65,11 @@ dependencies: # firebase_core: ^2.15.1 # firebase_messaging: ^14.6.7 chat_bubbles: ^1.5.0 + flutter_map: ^5.0.0 + latlong2: ^0.9.0 + animated_rating_stars: ^1.0.1 + flutter_rating_bar: ^4.0.1 + percent_indicator: ^4.2.3 dev_dependencies: flutter_test: