diff --git a/assets/translations/en_En.json b/assets/translations/en_En.json index ee5e9b2..aa48f32 100644 --- a/assets/translations/en_En.json +++ b/assets/translations/en_En.json @@ -87,5 +87,9 @@ "complain": "Complain", "distance": "Distance", "km": "KM", - "duration": "Duration" + "duration": "Duration", + "howWasTrip": "How was your trip?", + "yourFeedbackWillHelp": "Your feedback will help us improve \n driving experience better", + "rateFor": "Rate for", + "typeComment": "Type comment...." } \ No newline at end of file diff --git a/lib/constant/const_texts.dart b/lib/constant/const_texts.dart index fed1360..12e945a 100644 --- a/lib/constant/const_texts.dart +++ b/lib/constant/const_texts.dart @@ -87,10 +87,10 @@ class ConstTexts { static String distance = "distance"; static String km = "km"; static String duration = "duration"; - static String couponNotFound = "couponNotFound"; - static String tapToApply = "tapToApply"; - static String home = "home"; - static String myBookings = "myBookings"; + static String howWasTrip = "howWasTrip"; + static String yourFeedbackWillHelp = "yourFeedbackWillHelp"; + static String rateFor = "rateFor"; + static String typeComment = "typeComment"; static String profile = "profile"; static String wallet = "wallet"; static String cabServiceType = "cabServiceType"; diff --git a/lib/screen_ui/cab_service_screens/cab_order_details.dart b/lib/screen_ui/cab_service_screens/cab_order_details.dart index 4bce7a6..1c2a5c2 100644 --- a/lib/screen_ui/cab_service_screens/cab_order_details.dart +++ b/lib/screen_ui/cab_service_screens/cab_order_details.dart @@ -880,7 +880,7 @@ class CabOrderDetails extends StatelessWidget { // Subtotal _summaryTile( - ConstTexts.subtotal.tr(), + ConstTexts.subtotal.tr(), Constant.amountShow( amount: controller.subTotal.value.toString(), ), @@ -1004,7 +1004,7 @@ class CabOrderDetails extends StatelessWidget { Text( value, style: AppThemeData.semiBoldTextStyle( - fontSize: title == "Order Total" ? 18 : 16, + fontSize: title == ConstTexts.orderTotal.tr() ? 18 : 16, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900, ), ), diff --git a/lib/screen_ui/cab_service_screens/cab_review_screen.dart b/lib/screen_ui/cab_service_screens/cab_review_screen.dart index 9e0c0e5..e39a593 100644 --- a/lib/screen_ui/cab_service_screens/cab_review_screen.dart +++ b/lib/screen_ui/cab_service_screens/cab_review_screen.dart @@ -1,4 +1,6 @@ +import 'package:customer/constant/const_texts.dart'; import 'package:customer/controllers/cab_review_controller.dart'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_rating_bar/flutter_rating_bar.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -26,8 +28,22 @@ class CabReviewScreen extends StatelessWidget { centerTitle: true, elevation: 0, backgroundColor: AppThemeData.primary300, - leading: GestureDetector(onTap: () => Get.back(), child: Icon(Icons.arrow_back_ios, color: isDark ? Colors.white : Colors.black)), - title: Text(controller.ratingModel.value != null ? "Update Review".tr : "Add Review".tr, style: TextStyle(color: isDark ? Colors.white : Colors.black, fontSize: 16)), + leading: GestureDetector( + onTap: () => Get.back(), + child: Icon( + Icons.arrow_back_ios, + color: isDark ? Colors.white : Colors.black, + ), + ), + title: Text( + controller.ratingModel.value != null + ? ConstTexts.updateReview.tr() + : ConstTexts.addReview.tr(), + style: TextStyle( + color: isDark ? Colors.white : Colors.black, + fontSize: 16, + ), + ), ), body: Obx( () => @@ -38,11 +54,21 @@ class CabReviewScreen extends StatelessWidget { child: Stack( children: [ Padding( - padding: const EdgeInsets.only(left: 20, right: 20, top: 50, bottom: 20), + padding: const EdgeInsets.only( + left: 20, + right: 20, + top: 50, + bottom: 20, + ), child: Card( elevation: 2, - color: isDark ? AppThemeData.greyDark50 : AppThemeData.grey50, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), + color: + isDark + ? AppThemeData.greyDark50 + : AppThemeData.grey50, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), child: SingleChildScrollView( child: Padding( padding: const EdgeInsets.only(top: 65), @@ -50,81 +76,181 @@ class CabReviewScreen extends StatelessWidget { children: [ // Driver Name Padding( - padding: const EdgeInsets.only(top: 8.0), + padding: const EdgeInsets.only( + top: 8.0, + ), child: Text( - controller.order.value!.driver?.fullName() ?? "", - style: TextStyle(color: isDark ? Colors.white : Colors.black87, fontFamily: AppThemeData.medium, fontSize: 18), + controller.order.value!.driver + ?.fullName() ?? + "", + style: TextStyle( + color: + isDark + ? Colors.white + : Colors.black87, + fontFamily: AppThemeData.medium, + fontSize: 18, + ), ), ), // Car info Row( - mainAxisAlignment: MainAxisAlignment.center, + mainAxisAlignment: + MainAxisAlignment.center, children: [ Text( - controller.driverUser.value?.carNumber?.toUpperCase() ?? '', - style: TextStyle(color: isDark ? Colors.white : Colors.black87, fontFamily: AppThemeData.medium), + controller + .driverUser + .value + ?.carNumber + ?.toUpperCase() ?? + '', + style: TextStyle( + color: + isDark + ? Colors.white + : Colors.black87, + fontFamily: AppThemeData.medium, + ), ), const SizedBox(width: 8), Text( "${controller.driverUser.value?.carName} ${controller.driverUser.value?.carMakes}", - style: TextStyle(color: isDark ? Colors.white : Colors.black38, fontFamily: AppThemeData.medium), + style: TextStyle( + color: + isDark + ? Colors.white + : Colors.black38, + fontFamily: AppThemeData.medium, + ), ), ], ), - const Padding(padding: EdgeInsets.symmetric(vertical: 12), child: Divider(color: Colors.grey)), + const Padding( + padding: EdgeInsets.symmetric( + vertical: 12, + ), + child: Divider(color: Colors.grey), + ), // Title Padding( padding: const EdgeInsets.only(top: 16), - child: Text('How is your trip?'.tr, style: TextStyle(fontSize: 18, color: isDark ? Colors.white : Colors.black, fontWeight: FontWeight.bold, letterSpacing: 2)), + child: Text( + ConstTexts.howWasTrip.tr(), + style: TextStyle( + fontSize: 18, + color: + isDark + ? Colors.white + : Colors.black, + fontWeight: FontWeight.bold, + letterSpacing: 2, + ), + ), ), Padding( padding: const EdgeInsets.only(top: 8), child: Text( - 'Your feedback will help us improve \n driving experience better'.tr, + ConstTexts.yourFeedbackWillHelp.tr(), textAlign: TextAlign.center, - style: TextStyle(color: isDark ? Colors.white : Colors.black.withOpacity(0.60), letterSpacing: 0.8), + style: TextStyle( + color: + isDark + ? Colors.white + : Colors.black.withOpacity( + 0.60, + ), + letterSpacing: 0.8, + ), ), ), // Rating Padding( padding: const EdgeInsets.only(top: 20), - child: Text('Rate for'.tr, style: TextStyle(fontSize: 16, color: isDark ? Colors.white : Colors.black.withOpacity(0.60), letterSpacing: 0.8)), + child: Text( + ConstTexts.rateFor.tr(), + style: TextStyle( + fontSize: 16, + color: + isDark + ? Colors.white + : Colors.black.withValues( + alpha: 0.60, + ), + letterSpacing: 0.8, + ), + ), ), Padding( padding: const EdgeInsets.only(top: 8), child: Text( - controller.order.value!.driver?.fullName() ?? "", - style: TextStyle(fontSize: 18, color: isDark ? Colors.white : Colors.black, fontWeight: FontWeight.bold, letterSpacing: 2), + controller.order.value!.driver + ?.fullName() ?? + "", + style: TextStyle( + fontSize: 18, + color: + isDark + ? Colors.white + : Colors.black, + fontWeight: FontWeight.bold, + letterSpacing: 2, + ), ), ), Padding( padding: const EdgeInsets.only(top: 10), child: RatingBar.builder( - initialRating: controller.ratings.value, + initialRating: + controller.ratings.value, minRating: 1, direction: Axis.horizontal, allowHalfRating: true, itemCount: 5, - itemBuilder: (context, _) => const Icon(Icons.star, color: Colors.amber), - unratedColor: isDark ? AppThemeData.greyDark400 : AppThemeData.grey400, - onRatingUpdate: (rating) => controller.ratings.value = rating, + itemBuilder: + (context, _) => const Icon( + Icons.star, + color: Colors.amber, + ), + unratedColor: + isDark + ? AppThemeData.greyDark400 + : AppThemeData.grey400, + onRatingUpdate: + (rating) => + controller.ratings.value = + rating, ), ), // Comment - Padding(padding: const EdgeInsets.all(20.0), child: TextFieldWidget(hintText: "Type comment....".tr, controller: controller.comment.value, maxLine: 5)), + Padding( + padding: const EdgeInsets.all(20.0), + child: TextFieldWidget( + hintText: ConstTexts.typeComment.tr(), + controller: controller.comment.value, + maxLine: 5, + ), + ), // Submit Button Padding( padding: const EdgeInsets.all(20.0), child: RoundedButtonFill( - borderRadius: 10.r, - title: controller.ratingModel.value != null ? "Update Review".tr : "Add Review".tr, + borderRadius: 10.r, + title: + controller.ratingModel.value != + null + ? ConstTexts.updateReview.tr() + : ConstTexts.addReview.tr(), color: AppThemeData.primary300, - textColor: isDark ? Colors.white : Colors.black, + textColor: + isDark + ? Colors.white + : Colors.black, onPress: controller.submitReview, ), ), @@ -140,11 +266,28 @@ class CabReviewScreen extends StatelessWidget { decoration: BoxDecoration( borderRadius: BorderRadius.circular(60), color: Colors.white, - boxShadow: [BoxShadow(color: Colors.grey.withOpacity(0.15), blurRadius: 8, spreadRadius: 6)], + boxShadow: [ + BoxShadow( + color: Colors.grey.withValues(alpha: 0.15), + blurRadius: 8, + spreadRadius: 6, + ), + ], ), child: ClipRRect( borderRadius: BorderRadius.circular(60), - child: NetworkImageWidget(imageUrl: controller.order.value?.driver?.profilePictureURL ?? '', fit: BoxFit.cover, height: 110, width: 110), + child: NetworkImageWidget( + imageUrl: + controller + .order + .value + ?.driver + ?.profilePictureURL ?? + '', + fit: BoxFit.cover, + height: 110, + width: 110, + ), ), ), ),