BASE: Initialize Localization.

This commit is contained in:
2025-12-03 18:21:19 +05:00
parent cf58d069ab
commit b04050384d
141 changed files with 1577 additions and 1419 deletions

View File

@@ -4,6 +4,7 @@ import 'package:customer/screen_ui/auth_screens/login_screen.dart';
import 'package:customer/screen_ui/multi_vendor_service/wallet_screen/wallet_screen.dart';
import 'package:customer/screen_ui/rental_service/rental_order_details_screen.dart';
import 'package:customer/themes/round_button_fill.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../constant/constant.dart';
@@ -31,7 +32,7 @@ class MyRentalBookingScreen extends StatelessWidget {
backgroundColor: AppThemeData.primary300,
title: Padding(
padding: const EdgeInsets.only(bottom: 10),
child: Row(children: [const SizedBox(width: 10), Text("Rental History".tr, style: AppThemeData.boldTextStyle(fontSize: 18, color: AppThemeData.grey900))]),
child: Row(children: [const SizedBox(width: 10), Text("Rental History".tr(), style: AppThemeData.boldTextStyle(fontSize: 18, color: AppThemeData.grey900))]),
),
bottom: TabBar(
onTap: (index) {
@@ -55,16 +56,16 @@ class MyRentalBookingScreen extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text("Please Log In to Continue".tr, style: TextStyle(color: isDark ? AppThemeData.grey100 : AppThemeData.grey800, fontSize: 22, fontFamily: AppThemeData.semiBold)),
Text("Please Log In to Continue".tr(), style: TextStyle(color: isDark ? AppThemeData.grey100 : AppThemeData.grey800, fontSize: 22, fontFamily: AppThemeData.semiBold)),
const SizedBox(height: 5),
Text(
"Youre not logged in. Please sign in to access your account and explore all features.".tr,
"Youre not logged in. Please sign in to access your account and explore all features.".tr(),
textAlign: TextAlign.center,
style: TextStyle(color: isDark ? AppThemeData.grey50 : AppThemeData.grey500, fontSize: 16, fontFamily: AppThemeData.bold),
),
const SizedBox(height: 20),
RoundedButtonFill(
title: "Log in".tr,
title: "Log in".tr(),
width: 55,
height: 5.5,
color: AppThemeData.primary300,
@@ -82,7 +83,7 @@ class MyRentalBookingScreen extends StatelessWidget {
List<RentalOrderModel> orders = controller.getOrdersForTab(title);
if (orders.isEmpty) {
return Center(child: Text("No orders found".tr, style: AppThemeData.mediumTextStyle(color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)));
return Center(child: Text("No orders found".tr(), style: AppThemeData.mediumTextStyle(color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)));
}
return ListView.builder(
padding: const EdgeInsets.all(16),
@@ -151,7 +152,7 @@ class MyRentalBookingScreen extends StatelessWidget {
],
),
const SizedBox(height: 12),
Text("Vehicle Type :".tr, style: AppThemeData.boldTextStyle(fontSize: 16, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
Text("Vehicle Type :".tr(), style: AppThemeData.boldTextStyle(fontSize: 16, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
Padding(
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
child: Row(
@@ -195,7 +196,7 @@ class MyRentalBookingScreen extends StatelessWidget {
],
),
),
Text("Package info :".tr, style: AppThemeData.boldTextStyle(fontSize: 16, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
Text("Package info :".tr(), style: AppThemeData.boldTextStyle(fontSize: 16, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
Padding(
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
child: Row(
@@ -226,7 +227,7 @@ class MyRentalBookingScreen extends StatelessWidget {
),
),
if (Constant.isEnableOTPTripStartForRental == true)
Text("${'OTP :'.tr} ${order.otpCode}", style: AppThemeData.boldTextStyle(fontSize: 16, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
Text("${'OTP :'.tr()} ${order.otpCode}", style: AppThemeData.boldTextStyle(fontSize: 16, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
SizedBox(height: 10),
Row(
children: [

View File

@@ -4,6 +4,7 @@ import 'package:customer/screen_ui/rental_service/rental_coupon_screen.dart';
import 'package:customer/themes/show_toast_dialog.dart';
import 'package:customer/utils/network_image_widget.dart';
import 'package:dotted_border/dotted_border.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:get/get.dart';
@@ -42,7 +43,7 @@ class RentalConformationScreen extends StatelessWidget {
),
),
const SizedBox(width: 10),
Text("Confirm Rent a Car".tr, style: AppThemeData.boldTextStyle(fontSize: 18, color: AppThemeData.grey900)),
Text("Confirm Rent a Car".tr(), style: AppThemeData.boldTextStyle(fontSize: 18, color: AppThemeData.grey900)),
],
),
),
@@ -98,7 +99,7 @@ class RentalConformationScreen extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Your Preference".tr, style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
Text("Your Preference".tr(), style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
SizedBox(height: 10),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -140,7 +141,7 @@ class RentalConformationScreen extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Vehicle Type".tr, style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
Text("Vehicle Type".tr(), style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
SizedBox(height: 10),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -175,7 +176,7 @@ class RentalConformationScreen extends StatelessWidget {
Row(
children: [
Expanded(child: Text("Coupons".tr, style: AppThemeData.boldTextStyle(fontSize: 16, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900))),
Expanded(child: Text("Coupons".tr(), style: AppThemeData.boldTextStyle(fontSize: 16, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900))),
InkWell(
onTap: () {
Get.to(RentalCouponScreen())!.then((value) {
@@ -185,13 +186,13 @@ class RentalConformationScreen extends StatelessWidget {
controller.selectedCouponModel.value = value;
controller.calculateAmount();
} else {
ShowToastDialog.showToast("This offer not eligible for this booking".tr);
ShowToastDialog.showToast("This offer not eligible for this booking".tr());
}
}
});
},
child: Text(
"View All".tr,
"View All".tr(),
style: AppThemeData.boldTextStyle(decoration: TextDecoration.underline, fontSize: 14, color: isDark ? AppThemeData.primary300 : AppThemeData.primary300),
),
),
@@ -214,14 +215,14 @@ class RentalConformationScreen extends StatelessWidget {
controller: controller.couponController.value,
style: AppThemeData.semiBoldTextStyle(color: AppThemeData.grey900),
decoration: InputDecoration(
hintText: "Write coupon code".tr,
hintText: "Write coupon code".tr(),
hintStyle: AppThemeData.mediumTextStyle(fontSize: 16, color: AppThemeData.parcelService500),
border: InputBorder.none,
),
),
),
RoundedButtonFill(
title: "Redeem now".tr,
title: "Redeem now".tr(),
onPress: () {
if (controller.couponList.where((element) => element.code!.toLowerCase() == controller.couponController.value.text.toLowerCase()).isNotEmpty) {
CouponModel couponModel = controller.couponList.firstWhere((p0) => p0.code!.toLowerCase() == controller.couponController.value.text.toLowerCase());
@@ -232,13 +233,13 @@ class RentalConformationScreen extends StatelessWidget {
controller.calculateAmount();
controller.update();
} else {
ShowToastDialog.showToast("This offer not eligible for this booking".tr);
ShowToastDialog.showToast("This offer not eligible for this booking".tr());
}
} else {
ShowToastDialog.showToast("This coupon code has been expired".tr);
ShowToastDialog.showToast("This coupon code has been expired".tr());
}
} else {
ShowToastDialog.showToast("Invalid coupon code".tr);
ShowToastDialog.showToast("Invalid coupon code".tr());
}
},
borderRadius: 10,
@@ -263,14 +264,14 @@ class RentalConformationScreen extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Order Summary".tr, style: AppThemeData.boldTextStyle(fontSize: 14, color: AppThemeData.grey500)),
Text("Order Summary".tr(), style: AppThemeData.boldTextStyle(fontSize: 14, color: AppThemeData.grey500)),
const SizedBox(height: 8),
// Subtotal
_summaryTile("Subtotal".tr, Constant.amountShow(amount: controller.subTotal.value.toString()), isDark, null),
_summaryTile("Subtotal".tr(), Constant.amountShow(amount: controller.subTotal.value.toString()), isDark, null),
// Discount
_summaryTile("Discount".tr, Constant.amountShow(amount: controller.discount.value.toString()), isDark, AppThemeData.dangerDark300),
_summaryTile("Discount".tr(), Constant.amountShow(amount: controller.discount.value.toString()), isDark, AppThemeData.dangerDark300),
// Tax List
...List.generate(controller.rentalOrderModel.value.taxSetting!.length, (index) {
@@ -294,13 +295,13 @@ class RentalConformationScreen extends StatelessWidget {
const Divider(),
// Total
_summaryTile("Order Total".tr, Constant.amountShow(amount: controller.totalAmount.value.toString()), isDark, null),
_summaryTile("Order Total".tr(), Constant.amountShow(amount: controller.totalAmount.value.toString()), isDark, null),
],
),
),
SizedBox(height: 20),
RoundedButtonFill(
title: "Book now".tr,
title: "Book now".tr(),
onPress: () {
controller.placeOrder();
},

View File

@@ -6,6 +6,7 @@ import 'package:customer/themes/app_them_data.dart';
import 'package:customer/themes/responsive.dart';
import 'package:customer/widget/my_separator.dart';
import 'package:dotted_border/dotted_border.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -37,7 +38,7 @@ class RentalCouponScreen extends StatelessWidget {
),
),
const SizedBox(width: 10),
Text("Coupon".tr, style: AppThemeData.boldTextStyle(fontSize: 18, color: AppThemeData.grey900)),
Text("Coupon".tr(), style: AppThemeData.boldTextStyle(fontSize: 18, color: AppThemeData.grey900)),
],
),
),
@@ -46,7 +47,7 @@ class RentalCouponScreen extends StatelessWidget {
controller.isLoading.value
? Constant.loader()
: controller.cabCouponList.isEmpty
? Constant.showEmptyView(message: "Coupon not found".tr)
? Constant.showEmptyView(message: "Coupon not found".tr())
: ListView.builder(
shrinkWrap: true,
itemCount: controller.cabCouponList.length,
@@ -71,7 +72,7 @@ class RentalCouponScreen extends StatelessWidget {
child: RotatedBox(
quarterTurns: -1,
child: Text(
"${couponModel.discountType == "Fix Price" ? Constant.amountShow(amount: couponModel.discount) : "${couponModel.discount}%"} ${'Off'.tr}",
"${couponModel.discountType == "Fix Price" ? Constant.amountShow(amount: couponModel.discount) : "${couponModel.discount}%"} ${'Off'.tr()}",
textAlign: TextAlign.start,
style: TextStyle(fontFamily: AppThemeData.semiBold, fontSize: 16, color: isDark ? AppThemeData.grey50 : AppThemeData.grey50),
),
@@ -106,7 +107,7 @@ class RentalCouponScreen extends StatelessWidget {
Get.back(result: couponModel);
},
child: Text(
"Tap To Apply".tr,
"Tap To Apply".tr(),
textAlign: TextAlign.start,
style: TextStyle(fontFamily: AppThemeData.medium, color: isDark ? AppThemeData.primary300 : AppThemeData.primary300),
),

View File

@@ -2,6 +2,7 @@ import 'package:customer/constant/constant.dart';
import 'package:customer/controllers/cab_dashboard_controller.dart';
import 'package:customer/controllers/theme_controller.dart';
import 'package:customer/themes/app_them_data.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
@@ -40,15 +41,15 @@ class RentalDashboardScreen extends StatelessWidget {
items:
Constant.walletSetting == false
? [
navigationBarItem(isDark, index: 0, assetIcon: "assets/icons/ic_home_cab.svg", label: 'Home'.tr, controller: controller),
navigationBarItem(isDark, index: 1, assetIcon: "assets/icons/ic_booking_cab.svg", label: 'My Bookings'.tr, controller: controller),
navigationBarItem(isDark, index: 2, assetIcon: "assets/icons/ic_profile.svg", label: 'Profile'.tr, controller: controller),
navigationBarItem(isDark, index: 0, assetIcon: "assets/icons/ic_home_cab.svg", label: 'Home'.tr(), controller: controller),
navigationBarItem(isDark, index: 1, assetIcon: "assets/icons/ic_booking_cab.svg", label: 'My Bookings'.tr(), controller: controller),
navigationBarItem(isDark, index: 2, assetIcon: "assets/icons/ic_profile.svg", label: 'Profile'.tr(), controller: controller),
]
: [
navigationBarItem(isDark, index: 0, assetIcon: "assets/icons/ic_home_cab.svg", label: 'Home'.tr, controller: controller),
navigationBarItem(isDark, index: 1, assetIcon: "assets/icons/ic_booking_cab.svg", label: 'My Bookings'.tr, controller: controller),
navigationBarItem(isDark, index: 2, assetIcon: "assets/icons/ic_wallet_cab.svg", label: 'Wallet'.tr, controller: controller),
navigationBarItem(isDark, index: 3, assetIcon: "assets/icons/ic_profile.svg", label: 'Profile'.tr, controller: controller),
navigationBarItem(isDark, index: 0, assetIcon: "assets/icons/ic_home_cab.svg", label: 'Home'.tr(), controller: controller),
navigationBarItem(isDark, index: 1, assetIcon: "assets/icons/ic_booking_cab.svg", label: 'My Bookings'.tr(), controller: controller),
navigationBarItem(isDark, index: 2, assetIcon: "assets/icons/ic_wallet_cab.svg", label: 'Wallet'.tr(), controller: controller),
navigationBarItem(isDark, index: 3, assetIcon: "assets/icons/ic_profile.svg", label: 'Profile'.tr(), controller: controller),
],
),
);

View File

@@ -1,5 +1,6 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:customer/constant/constant.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../controllers/rental_home_controller.dart';
@@ -57,7 +58,7 @@ class RentalHomeScreen extends StatelessWidget {
onTap: () {
Get.offAll(const LoginScreen());
},
child: Text("Login".tr, style: AppThemeData.boldTextStyle(fontSize: 14, color: AppThemeData.grey900)),
child: Text("Login".tr(), style: AppThemeData.boldTextStyle(fontSize: 14, color: AppThemeData.grey900)),
)
: Text(Constant.userModel!.fullName(), style: AppThemeData.boldTextStyle(fontSize: 14, color: AppThemeData.grey900)),
],
@@ -92,7 +93,7 @@ class RentalHomeScreen extends StatelessWidget {
controller.sourceTextEditController.value.text = address;
controller.departureLatLongOsm.value = latlong.LatLng(lat, lng);
} else {
ShowToastDialog.showToast("Service is unavailable at the selected address.".tr);
ShowToastDialog.showToast("Service is unavailable at the selected address.".tr());
}
}
} else {
@@ -104,7 +105,7 @@ class RentalHomeScreen extends StatelessWidget {
controller.sourceTextEditController.value.text = Utils.formatAddress(selectedLocation: selectedLocationModel);
controller.departureLatLong.value = latlong.LatLng(selectedLocationModel.latLng!.latitude, selectedLocationModel.latLng!.longitude);
} else {
ShowToastDialog.showToast("Service is unavailable at the selected address.".tr);
ShowToastDialog.showToast("Service is unavailable at the selected address.".tr());
}
}
});
@@ -113,8 +114,8 @@ class RentalHomeScreen extends StatelessWidget {
hoverColor: Colors.transparent,
child: TextFieldWidget(
controller: controller.sourceTextEditController.value,
hintText: "Your current location".tr,
title: "Pickup Location".tr,
hintText: "Your current location".tr(),
title: "Pickup Location".tr(),
enable: false,
prefix: Padding(padding: EdgeInsets.only(left: 10, right: 10), child: Icon(Icons.stop_circle_outlined, color: Colors.green)),
),
@@ -124,7 +125,7 @@ class RentalHomeScreen extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text("Select Your Vehicle Type".tr, style: AppThemeData.boldTextStyle(fontSize: 18, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
Text("Select Your Vehicle Type".tr(), style: AppThemeData.boldTextStyle(fontSize: 18, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
const SizedBox(width: 10),
GestureDetector(
onTap: () => controller.pickDate(context),
@@ -247,27 +248,27 @@ class RentalHomeScreen extends StatelessWidget {
),
const SizedBox(height: 25),
RoundedButtonFill(
title: "Continue".tr,
title: "Continue".tr(),
onPress: () async {
final sourceText = controller.sourceTextEditController.value.text.trim();
if (Constant.userModel == null) {
ShowToastDialog.showToast("Please login to continue".tr);
ShowToastDialog.showToast("Please login to continue".tr());
return;
}
if (sourceText.isEmpty) {
ShowToastDialog.showToast("Please select source location".tr);
ShowToastDialog.showToast("Please select source location".tr());
return;
}
if (controller.selectedVehicleType.value == null) {
ShowToastDialog.showToast("Please select a vehicle type".tr);
ShowToastDialog.showToast("Please select a vehicle type".tr());
return;
}
await controller.getRentalPackage();
if (controller.rentalPackages.isEmpty) {
ShowToastDialog.showToast("No preference available for the selected vehicle type".tr);
ShowToastDialog.showToast("No preference available for the selected vehicle type".tr());
return;
}
@@ -308,7 +309,7 @@ class RentalHomeScreen extends StatelessWidget {
alignment: Alignment.topLeft,
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 10),
child: Text("Select Preferences".tr, style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18, color: isDark ? Colors.white : Colors.black)),
child: Text("Select Preferences".tr(), style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18, color: isDark ? Colors.white : Colors.black)),
),
),
@@ -398,7 +399,7 @@ class RentalHomeScreen extends StatelessWidget {
const SizedBox(height: 10),
RoundedButtonFill(
title: "Continue".tr,
title: "Continue".tr(),
onPress: () {
Get.bottomSheet(paymentBottomSheet(context, controller, isDark), isScrollControlled: true, backgroundColor: Colors.transparent);
},
@@ -434,7 +435,7 @@ class RentalHomeScreen extends StatelessWidget {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text("Select Payment Method".tr, style: AppThemeData.mediumTextStyle(fontSize: 18, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
Text("Select Payment Method".tr(), style: AppThemeData.mediumTextStyle(fontSize: 18, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
GestureDetector(onTap: () => Get.back(), child: const Icon(Icons.close)),
],
),
@@ -446,7 +447,7 @@ class RentalHomeScreen extends StatelessWidget {
padding: EdgeInsets.zero,
controller: scrollController,
children: [
Text("Preferred Payment".tr, style: AppThemeData.boldTextStyle(fontSize: 15, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
Text("Preferred Payment".tr(), style: AppThemeData.boldTextStyle(fontSize: 15, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
const SizedBox(height: 10),
if (controller.walletSettingModel.value.isEnabled == true || controller.cashOnDeliverySettingModel.value.isEnabled == true)
@@ -478,7 +479,7 @@ class RentalHomeScreen extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 10),
Text("Other Payment Options".tr, style: AppThemeData.boldTextStyle(fontSize: 15, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
Text("Other Payment Options".tr(), style: AppThemeData.boldTextStyle(fontSize: 15, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
const SizedBox(height: 10),
],
),
@@ -524,12 +525,12 @@ class RentalHomeScreen extends StatelessWidget {
// Continue button
RoundedButtonFill(
title: "Continue".tr,
title: "Continue".tr(),
color: AppThemeData.primary300,
textColor: AppThemeData.grey900,
onPress: () async {
if (controller.selectedPaymentMethod.value.isEmpty) {
ShowToastDialog.showToast("Please select a payment method".tr);
ShowToastDialog.showToast("Please select a payment method".tr());
return;
}
@@ -539,7 +540,7 @@ class RentalHomeScreen extends StatelessWidget {
num baseFare = double.tryParse(controller.selectedPackage.value?.baseFare.toString() ?? "0") ?? 0;
if (walletAmount < baseFare) {
ShowToastDialog.showToast("You do not have sufficient wallet balance".tr);
ShowToastDialog.showToast("You do not have sufficient wallet balance".tr());
return;
}
}

View File

@@ -7,6 +7,7 @@ import 'package:customer/screen_ui/rental_service/rental_review_screen.dart';
import 'package:customer/themes/responsive.dart';
import 'package:customer/themes/show_toast_dialog.dart';
import 'package:customer/utils/network_image_widget.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart';
@@ -50,7 +51,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
),
),
const SizedBox(width: 10),
Text("Order Details".tr, style: AppThemeData.boldTextStyle(fontSize: 18, color: AppThemeData.grey900)),
Text("Order Details".tr(), style: AppThemeData.boldTextStyle(fontSize: 18, color: AppThemeData.grey900)),
],
),
),
@@ -80,14 +81,15 @@ class RentalOrderDetailsScreen extends StatelessWidget {
children: [
Expanded(
child: Text(
"${'Booking Id :'.tr} ${controller.order.value.id}",
"${'Booking Id :'.tr()} ${controller.order.value.id}",
style: AppThemeData.semiBoldTextStyle(fontSize: 16, color: isDark ? AppThemeData.greyDark700 : AppThemeData.grey700),
),
),
InkWell(
onTap: () {
Clipboard.setData(ClipboardData(text: controller.order.value.id.toString()));
ShowToastDialog.showToast("Booking ID copied to clipboard".tr);
ShowToastDialog.showToast("Booking ID copied to clipboard".tr());
},
child: Icon(Icons.copy),
),
@@ -132,7 +134,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Your Preference".tr, style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
Text("Your Preference".tr(), style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
SizedBox(height: 10),
Row(
@@ -178,7 +180,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("About Driver".tr, style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
Text("About Driver".tr(), style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
const SizedBox(height: 8),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -234,7 +236,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 10),
child: RoundedButtonFill(
title: controller.ratingModel.value.id != null && controller.ratingModel.value.id!.isNotEmpty ? 'Update Review'.tr : 'Add Review'.tr,
title: controller.ratingModel.value.id != null && controller.ratingModel.value.id!.isNotEmpty ? 'Update Review'.tr() : 'Add Review'.tr(),
onPress: () async {
final result = await Get.to(() => RentalReviewScreen(), arguments: {'order': controller.order.value});
@@ -274,7 +276,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
const SizedBox(width: 10),
InkWell(
onTap: () async {
ShowToastDialog.showLoader("Please wait...".tr);
ShowToastDialog.showLoader("Please wait...".tr());
UserModel? customer = await FireStoreUtils.getUserProfile(controller.order.value.authorID ?? '');
UserModel? driverUser = await FireStoreUtils.getUserProfile(controller.order.value.driverId ?? '');
@@ -327,7 +329,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Vehicle Type".tr, style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
Text("Vehicle Type".tr(), style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
SizedBox(height: 10),
Row(
children: [
@@ -371,7 +373,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Rental Details".tr, style: AppThemeData.boldTextStyle(fontSize: 16, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
Text("Rental Details".tr(), style: AppThemeData.boldTextStyle(fontSize: 16, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
Divider(color: isDark ? AppThemeData.greyDark300 : AppThemeData.grey300),
Padding(
padding: const EdgeInsets.symmetric(vertical: 10),
@@ -379,13 +381,13 @@ class RentalOrderDetailsScreen extends StatelessWidget {
children: [
Expanded(
child: Text(
'Rental Package'.tr,
'Rental Package'.tr(),
textAlign: TextAlign.start,
style: AppThemeData.mediumTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900),
),
),
Text(
controller.order.value.rentalPackageModel!.name.toString().tr,
controller.order.value.rentalPackageModel!.name.toString().tr(),
textAlign: TextAlign.start,
style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900),
),
@@ -398,13 +400,13 @@ class RentalOrderDetailsScreen extends StatelessWidget {
children: [
Expanded(
child: Text(
'Rental Package Price'.tr,
'Rental Package Price'.tr(),
textAlign: TextAlign.start,
style: AppThemeData.mediumTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900),
),
),
Text(
Constant.amountShow(amount: controller.order.value.rentalPackageModel!.baseFare.toString()).tr,
Constant.amountShow(amount: controller.order.value.rentalPackageModel!.baseFare.toString()).tr(),
textAlign: TextAlign.start,
style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900),
),
@@ -417,13 +419,13 @@ class RentalOrderDetailsScreen extends StatelessWidget {
children: [
Expanded(
child: Text(
'${'Including'.tr} ${Constant.distanceType.tr}',
'${'Including'.tr()} ${Constant.distanceType.tr()}',
textAlign: TextAlign.start,
style: AppThemeData.mediumTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900),
),
),
Text(
"${controller.order.value.rentalPackageModel!.includedDistance.toString()} ${Constant.distanceType}".tr,
"${controller.order.value.rentalPackageModel!.includedDistance.toString()} ${Constant.distanceType}".tr(),
textAlign: TextAlign.start,
style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900),
),
@@ -436,13 +438,13 @@ class RentalOrderDetailsScreen extends StatelessWidget {
children: [
Expanded(
child: Text(
'Including Hours'.tr,
'Including Hours'.tr(),
textAlign: TextAlign.start,
style: AppThemeData.mediumTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900),
),
),
Text(
"${controller.order.value.rentalPackageModel!.includedHours.toString()} ${'Hr'.tr}".tr,
"${controller.order.value.rentalPackageModel!.includedHours.toString()} ${'Hr'.tr()}".tr(),
textAlign: TextAlign.start,
style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900),
),
@@ -455,7 +457,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
children: [
Expanded(
child: Text(
'${'Extra'.tr} ${Constant.distanceType}',
'${'Extra'.tr()} ${Constant.distanceType}',
textAlign: TextAlign.start,
style: AppThemeData.mediumTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900),
),
@@ -496,13 +498,13 @@ class RentalOrderDetailsScreen extends StatelessWidget {
children: [
Expanded(
child: Text(
'Extra Minutes'.tr,
'Extra Minutes'.tr(),
textAlign: TextAlign.start,
style: AppThemeData.mediumTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900),
),
),
Text(
"${controller.order.value.endTime == null ? "0" : (((controller.order.value.endTime!.toDate().difference(controller.order.value.startTime!.toDate()).inMinutes) - (int.parse(controller.order.value.rentalPackageModel!.includedHours.toString()) * 60)).clamp(0, double.infinity).toInt().toString())} ${'Min'.tr}",
"${controller.order.value.endTime == null ? "0" : (((controller.order.value.endTime!.toDate().difference(controller.order.value.startTime!.toDate()).inMinutes) - (int.parse(controller.order.value.rentalPackageModel!.includedHours.toString()) * 60)).clamp(0, double.infinity).toInt().toString())} ${'Min'.tr()}",
textAlign: TextAlign.start,
style: AppThemeData.boldTextStyle(fontSize: 14, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900),
),
@@ -524,11 +526,11 @@ class RentalOrderDetailsScreen extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Order Summary".tr, style: AppThemeData.boldTextStyle(fontSize: 14, color: AppThemeData.grey500)),
Text("Order Summary".tr(), style: AppThemeData.boldTextStyle(fontSize: 14, color: AppThemeData.grey500)),
const SizedBox(height: 8),
_summaryTile("Subtotal".tr, Constant.amountShow(amount: controller.subTotal.value.toString()), isDark, null),
_summaryTile("Discount".tr, Constant.amountShow(amount: controller.discount.value.toString()), isDark, AppThemeData.dangerDark300),
_summaryTile("Subtotal".tr(), Constant.amountShow(amount: controller.subTotal.value.toString()), isDark, null),
_summaryTile("Discount".tr(), Constant.amountShow(amount: controller.discount.value.toString()), isDark, AppThemeData.dangerDark300),
...List.generate(controller.order.value.taxSetting?.length ?? 0, (index) {
final taxModel = controller.order.value.taxSetting![index];
@@ -542,7 +544,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
}),
const Divider(),
_summaryTile("Order Total".tr, Constant.amountShow(amount: controller.totalAmount.value.toString()), isDark, null),
_summaryTile("Order Total".tr(), Constant.amountShow(amount: controller.totalAmount.value.toString()), isDark, null),
],
),
),
@@ -563,7 +565,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
if (controller.order.value.endKitoMetersReading == null ||
controller.order.value.endKitoMetersReading == "0.0" ||
controller.order.value.endKitoMetersReading!.isEmpty) {
ShowToastDialog.showToast("You are not able to pay now until driver adds kilometer".tr);
ShowToastDialog.showToast("You are not able to pay now until driver adds kilometer".tr());
} else {
Get.bottomSheet(paymentBottomSheet(context, controller, isDark, controller.order.value), isScrollControlled: true, backgroundColor: Colors.transparent);
}
@@ -626,7 +628,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text("Select Payment Method".tr, style: AppThemeData.mediumTextStyle(fontSize: 18, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
Text("Select Payment Method".tr(), style: AppThemeData.mediumTextStyle(fontSize: 18, color: isDark ? AppThemeData.greyDark900 : AppThemeData.grey900)),
GestureDetector(
onTap: () {
Get.back();
@@ -641,7 +643,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
padding: EdgeInsets.zero,
controller: scrollController,
children: [
Text("Preferred Payment".tr, textAlign: TextAlign.start, style: AppThemeData.boldTextStyle(fontSize: 15, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
Text("Preferred Payment".tr(), textAlign: TextAlign.start, style: AppThemeData.boldTextStyle(fontSize: 15, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500)),
const SizedBox(height: 10),
if (controller.walletSettingModel.value.isEnabled == true || controller.cashOnDeliverySettingModel.value.isEnabled == true)
Container(
@@ -672,7 +674,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
children: [
const SizedBox(height: 10),
Text(
"Other Payment Options".tr,
"Other Payment Options".tr(),
textAlign: TextAlign.start,
style: AppThemeData.boldTextStyle(fontSize: 15, color: isDark ? AppThemeData.greyDark500 : AppThemeData.grey500),
),
@@ -717,12 +719,12 @@ class RentalOrderDetailsScreen extends StatelessWidget {
),
),
RoundedButtonFill(
title: "Continue".tr,
title: "Continue".tr(),
color: AppThemeData.primary300,
textColor: AppThemeData.grey900,
onPress: () async {
if (controller.selectedPaymentMethod.value.isEmpty) {
ShowToastDialog.showToast("Please select a payment method".tr);
ShowToastDialog.showToast("Please select a payment method".tr());
} else {
if (controller.selectedPaymentMethod.value == PaymentGateway.stripe.name) {
controller.stripeMakePayment(amount: controller.totalAmount.value.toString());
@@ -740,7 +742,7 @@ class RentalOrderDetailsScreen extends StatelessWidget {
controller.completeOrder();
} else if (controller.selectedPaymentMethod.value == PaymentGateway.wallet.name) {
if (Constant.userModel!.walletAmount == null || Constant.userModel!.walletAmount! < controller.totalAmount.value) {
ShowToastDialog.showToast("You do not have sufficient wallet balance".tr);
ShowToastDialog.showToast("You do not have sufficient wallet balance".tr());
} else {
controller.completeOrder();
}
@@ -756,14 +758,14 @@ class RentalOrderDetailsScreen extends StatelessWidget {
RazorPayController().createOrderRazorPay(amount: double.parse(controller.totalAmount.value.toString()), razorpayModel: controller.razorPayModel.value).then((value) {
if (value == null) {
Get.back();
ShowToastDialog.showToast("Something went wrong, please contact admin.".tr);
ShowToastDialog.showToast("Something went wrong, please contact admin.".tr());
} else {
CreateRazorPayOrderModel result = value;
controller.openCheckout(amount: controller.totalAmount.value.toString(), orderId: result.id);
}
});
} else {
ShowToastDialog.showToast("Please select payment method".tr);
ShowToastDialog.showToast("Please select payment method".tr());
}
}
},

View File

@@ -1,3 +1,4 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
import 'package:get/get.dart';
@@ -30,7 +31,7 @@ class RentalReviewScreen extends StatelessWidget {
child: Icon(Icons.arrow_back_ios, color: isDark ? Colors.white : Colors.black),
),
title: Text(
controller.ratingModel.value != null ? "Update Review".tr : "Add Review".tr,
controller.ratingModel.value != null ? "Update Review".tr() : "Add Review".tr(),
style: TextStyle(color: isDark ? Colors.white : Colors.black, fontSize: 16),
),
),
@@ -93,7 +94,7 @@ class RentalReviewScreen extends StatelessWidget {
Padding(
padding: const EdgeInsets.only(top: 16),
child: Text(
'How is your trip?'.tr,
'How is your trip?'.tr(),
style: TextStyle(
fontSize: 18,
color: isDark ? Colors.white : Colors.black,
@@ -105,7 +106,7 @@ class RentalReviewScreen extends StatelessWidget {
Padding(
padding: const EdgeInsets.only(top: 8),
child: Text(
'Your feedback will help us improve \n driving experience better'.tr,
'Your feedback will help us improve \n driving experience better'.tr(),
textAlign: TextAlign.center,
style: TextStyle(
color: isDark ? Colors.white : Colors.black.withOpacity(0.60),
@@ -118,7 +119,7 @@ class RentalReviewScreen extends StatelessWidget {
Padding(
padding: const EdgeInsets.only(top: 20),
child: Text(
'Rate for'.tr,
'Rate for'.tr(),
style: TextStyle(
fontSize: 16,
color: isDark ? Colors.white : Colors.black.withOpacity(0.60),
@@ -156,7 +157,7 @@ class RentalReviewScreen extends StatelessWidget {
Padding(
padding: const EdgeInsets.all(20.0),
child: TextFieldWidget(
hintText: "Type comment....".tr,
hintText: "Type comment....".tr(),
controller: controller.comment.value,
maxLine: 5,
),