fix localization and UI updates #4

Merged
FaizHashmiCS22 merged 1 commits from fatima_dev into faiz_development 5 days ago

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:car_customer_app/views/branches/components/branch_reviews_widget.dart'; import 'package:car_customer_app/views/branches/components/branch_reviews_widget.dart';
import 'package:car_customer_app/views/branches/components/items_list_sheet.dart'; import 'package:car_customer_app/views/branches/components/items_list_sheet.dart';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/utils/utils.dart'; import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:mc_common_app/view_models/appointments_view_model.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
@ -46,6 +47,7 @@ class _BranchDetailViewState extends State<BranchDetailView> {
}); });
} }
@override @override
void dispose() { void dispose() {
appointmentsVM.resetCurrentBranchRatings(); appointmentsVM.resetCurrentBranchRatings();
@ -90,7 +92,7 @@ class _BranchDetailViewState extends State<BranchDetailView> {
children: [ children: [
(LocaleKeys.location.tr() + ":").toText(color: MyColors.lightTextColor, fontSize: 12), (LocaleKeys.location.tr() + ":").toText(color: MyColors.lightTextColor, fontSize: 12),
4.width, 4.width,
(widget.branchDetailModel.distanceKm.toString() + " km").toText(fontSize: 12, isBold: true), (widget.branchDetailModel.distanceKm.toString() + LocaleKeys.km.tr()).toText(fontSize: 12, isBold: true),
], ],
), ),
Row( Row(
@ -199,24 +201,28 @@ class _BranchDetailViewState extends State<BranchDetailView> {
} }
Widget buildServicesList() { Widget buildServicesList() {
final isArabic = AppState().isArabic(context);
return ListView.separated( return ListView.separated(
itemBuilder: (context, index) { itemBuilder: (context, index) {
return ExpansionTile( return ExpansionTile(
tilePadding: EdgeInsets.zero, tilePadding: EdgeInsets.zero,
title: (widget.branchDetailModel.branchServices![index].serviceDescription ?? "").toText(fontSize: 16), // title: (widget.branchDetailModel.branchServices![index].serviceDescription ?? "").toText(fontSize: 16),
title: (isArabic
? (widget.branchDetailModel.branchServices![index].serviceDescriptionN ?? widget.branchDetailModel.branchServices![index].serviceDescription ?? "")
: (widget.branchDetailModel.branchServices![index].serviceDescription ?? "")).toText(fontSize: 16),
children: [ children: [
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
showItem(LocaleKeys.allowingHomeService.tr() + " :", (widget.branchDetailModel.branchServices![index].isAllowAppointment ?? false) ? LocaleKeys.yes.tr() : LocaleKeys.no.tr(), valueColor: Colors.green), showItem(LocaleKeys.allowingHomeService.tr() + " :", (widget.branchDetailModel.branchServices![index].isAllowAppointment ?? false) ? LocaleKeys.yes.tr() : LocaleKeys.no.tr(), valueColor: Colors.green),
if ((widget.branchDetailModel.branchServices![index].isAllowAppointment ?? false)) ...[ if ((widget.branchDetailModel.branchServices![index].isAllowAppointment ?? false)) ...[
showItem(LocaleKeys.homeServiceRange.tr() + " :", widget.branchDetailModel.branchServices![index].customerLocationRange.toString() + "KM"), showItem(LocaleKeys.homeServiceRange.tr() + " :", widget.branchDetailModel.branchServices![index].customerLocationRange.toString() + LocaleKeys.km.tr()),
showItem(LocaleKeys.chargesPerKM.tr() + " :", widget.branchDetailModel.branchServices![index].customerLocationRange.toString() + LocaleKeys.sar.tr()), showItem(LocaleKeys.chargesPerKM.tr() + " :", widget.branchDetailModel.branchServices![index].customerLocationRange.toString() + LocaleKeys.sar.tr()),
], ],
8.height, 8.height,
((widget.branchDetailModel.branchServices![index].itemsCount != null && widget.branchDetailModel.branchServices![index].itemsCount! > 0) ((widget.branchDetailModel.branchServices![index].itemsCount != null && widget.branchDetailModel.branchServices![index].itemsCount! > 0)
? widget.branchDetailModel.branchServices![index].itemsCount.toString() + " items" ? widget.branchDetailModel.branchServices![index].itemsCount.toString() + LocaleKeys.items.tr()
: "No" + " items") : LocaleKeys.no_items.tr())
.toText( .toText(
fontSize: 12, fontSize: 12,
isBold: true, isBold: true,

@ -64,9 +64,9 @@ class _ItemsListSheetState extends State<ItemsListSheet> {
showItem(LocaleKeys.manufacturedOn.tr() + ":", (DateHelper.formatAsDayMonthYear(DateHelper.parseStringToDate(serviceItemModel.manufactureDate!))), showItem(LocaleKeys.manufacturedOn.tr() + ":", (DateHelper.formatAsDayMonthYear(DateHelper.parseStringToDate(serviceItemModel.manufactureDate!))),
valueColor: MyColors.darkTextColor), valueColor: MyColors.darkTextColor),
], ],
showItem(LocaleKeys.availableforAppointment.tr() + ":", (serviceItemModel.isAllowAppointment ?? false) ? "Yes" : "No", valueColor: Colors.green), showItem(LocaleKeys.availableforAppointment.tr() + ":", (serviceItemModel.isAllowAppointment ?? false) ? LocaleKeys.yes.tr() : LocaleKeys.no.tr(), valueColor: Colors.green),
showItem(LocaleKeys.allowingWorkshopService.tr() + ":", (serviceItemModel.isAppointmentCompanyLoc ?? false) ? "Yes" : "No", valueColor: Colors.green), showItem(LocaleKeys.allowingWorkshopService.tr() + ":", (serviceItemModel.isAppointmentCompanyLoc ?? false) ? LocaleKeys.yes.tr() : LocaleKeys.no.tr(), valueColor: Colors.green),
showItem(LocaleKeys.allowingHomeService.tr() + ":", (serviceItemModel.isAppointmentCustomerLoc ?? false) ? "Yes" : "No", valueColor: Colors.green), showItem(LocaleKeys.allowingHomeService.tr() + ":", (serviceItemModel.isAppointmentCustomerLoc ?? false) ? LocaleKeys.yes.tr() : LocaleKeys.no.tr(), valueColor: Colors.green),
12.height, 12.height,
LocaleKeys.serviceAmount.tr().toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true), LocaleKeys.serviceAmount.tr().toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true),
Row( Row(

@ -103,7 +103,14 @@ class _ProviderProfileViewState extends State<ProviderProfileView> {
children: [ children: [
("${LocaleKeys.memberSince.tr()}:").toText(color: MyColors.lightTextColor, fontSize: 12), ("${LocaleKeys.memberSince.tr()}:").toText(color: MyColors.lightTextColor, fontSize: 12),
4.width, 4.width,
"${DateHelper.formatAsMonthYear( // "${DateHelper.formatAsMonthYear(
// DateHelper.parseStringToDate(
// DateHelper.formatDateT(
// appointmentsVM.providerProfileModel!.memberSince ?? "",
// ),
// ),
// )}"
"${DateFormat('MMMM yyyy', context.locale.languageCode).format(
DateHelper.parseStringToDate( DateHelper.parseStringToDate(
DateHelper.formatDateT( DateHelper.formatDateT(
appointmentsVM.providerProfileModel!.memberSince ?? "", appointmentsVM.providerProfileModel!.memberSince ?? "",
@ -137,7 +144,7 @@ class _ProviderProfileViewState extends State<ProviderProfileView> {
}, },
providerImageUrl: (branchModel.branchImages != null && branchModel.branchImages!.isNotEmpty) ? (branchModel.branchImages!.first.imageUrl ?? "") : "", providerImageUrl: (branchModel.branchImages != null && branchModel.branchImages!.isNotEmpty) ? (branchModel.branchImages!.first.imageUrl ?? "") : "",
title: branchModel.branchName ?? "", title: branchModel.branchName ?? "",
providerLocation: branchModel.distanceKm.toString() + " KM", providerLocation: branchModel.distanceKm.toString() + LocaleKeys.km.tr(),
providerName: branchModel.serviceProviderName ?? "", providerName: branchModel.serviceProviderName ?? "",
providerRatings: (branchModel.branchRateAvg ?? 0.0), providerRatings: (branchModel.branchRateAvg ?? 0.0),
services: branchModel.branchServices, services: branchModel.branchServices,

@ -1,111 +1,111 @@
//
import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; // import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; // import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/theme/colors.dart'; // import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; // import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
//
class AdWidget extends StatelessWidget { // class AdWidget extends StatelessWidget {
final int count; // final int count;
//
const AdWidget({Key? key, required this.count}) : super(key: key); // const AdWidget({Key? key, required this.count}) : super(key: key);
//
@override // @override
Widget build(BuildContext context) { // Widget build(BuildContext context) {
return ListView.builder( // return ListView.builder(
itemCount: count, // itemCount: count,
shrinkWrap: true, // shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(), // physics: const NeverScrollableScrollPhysics(),
itemBuilder: (BuildContext context, int index) { // itemBuilder: (BuildContext context, int index) {
return Padding( // return Padding(
padding: const EdgeInsets.only(bottom: 15), // padding: const EdgeInsets.only(bottom: 15),
child: buildAdContainer(), // child: buildAdContainer(),
); // );
}); // });
} // }
//
Widget buildAdContainer() { // Widget buildAdContainer() {
return Row( // return Row(
children: [ // children: [
Image.asset( // Image.asset(
"assets/images/bn_car.jpeg", // "assets/images/bn_car.jpeg",
width: 80, // width: 80,
height: 80, // height: 80,
fit: BoxFit.cover, // fit: BoxFit.cover,
), // ),
12.width, // 12.width,
Expanded( // Expanded(
child: Column( // child: Column(
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
children: [ // children: [
Row( // Row(
mainAxisAlignment: MainAxisAlignment.start, // mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
children: [ // children: [
Expanded( // Expanded(
child: Column( // child: Column(
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, // mainAxisAlignment: MainAxisAlignment.start,
children: [ // children: [
"Toyota Crolla".toText(fontSize: 16, isBold: true), // "Toyota Crolla".toText(fontSize: 16, isBold: true),
Row( // Row(
children: [ // children: [
"Model:".toText( // "Model:".toText(
color: MyColors.lightTextColor, // color: MyColors.lightTextColor,
), // ),
2.width, // 2.width,
"2019".toText(), // "2019".toText(),
], // ],
), // ),
Row( // Row(
children: [ // children: [
"Mileage:".toText( // "Mileage:".toText(
color: MyColors.lightTextColor, // color: MyColors.lightTextColor,
), // ),
2.width, // 2.width,
"73,000 km".toText(), // "73,000 km".toText(),
], // ],
), // ),
], // ],
), // ),
), // ),
Column( // Column(
crossAxisAlignment: CrossAxisAlignment.end, // crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.start, // mainAxisAlignment: MainAxisAlignment.start,
children: [ // children: [
"Riyadh".toText( // "Riyadh".toText(
color: MyColors.lightTextColor, // color: MyColors.lightTextColor,
), // ),
"9 Hours Ago".toText( // "9 Hours Ago".toText(
color: MyColors.lightTextColor, // color: MyColors.lightTextColor,
), // ),
], // ],
), // ),
], // ],
), // ),
8.height, // 8.height,
Row( // Row(
children: [ // children: [
Expanded( // Expanded(
child: Row( // child: Row(
mainAxisAlignment: MainAxisAlignment.start, // mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.end, // crossAxisAlignment: CrossAxisAlignment.end,
children: [ // children: [
"30,000".toText(fontSize: 16, isBold: true), // "30,000".toText(fontSize: 16, isBold: true),
2.width, // 2.width,
"SAR:".toText( // "SAR:".toText(
color: MyColors.lightTextColor, // color: MyColors.lightTextColor,
), // ),
], // ],
), // ),
), // ),
const Icon(Icons.arrow_forward) // const Icon(Icons.arrow_forward)
], // ],
), // ),
], // ],
), // ),
), // ),
], // ],
).toWhiteContainer(width: double.infinity, allPading: 12); // ).toWhiteContainer(width: double.infinity, allPading: 12);
} // }
} // }

@ -1,90 +1,90 @@
//
import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; // import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; // import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/theme/colors.dart'; // import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; // import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
//
class AppointmentSliderWidget extends StatelessWidget { // class AppointmentSliderWidget extends StatelessWidget {
const AppointmentSliderWidget({Key? key}) : super(key: key); // const AppointmentSliderWidget({Key? key}) : super(key: key);
//
@override // @override
Widget build(BuildContext context) { // Widget build(BuildContext context) {
return Column( // return Column(
children: [ // children: [
Row( // Row(
children: [ // children: [
Expanded( // Expanded(
child: Column( // child: Column(
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, // mainAxisAlignment: MainAxisAlignment.start,
children: [ // children: [
"Olaya Brach".toText( // "Olaya Brach".toText(
color: MyColors.lightTextColor, // color: MyColors.lightTextColor,
isBold: true, // isBold: true,
), // ),
"Abdullah Alhbas".toText( // "Abdullah Alhbas".toText(
isBold: true, // isBold: true,
fontSize: 14, // fontSize: 14,
), // ),
Row( // Row(
children: [ // children: [
"Appt. On:".toText( // "Appt. On:".toText(
color: MyColors.lightTextColor, // color: MyColors.lightTextColor,
), // ),
2.width, // 2.width,
"19-Mar-2023 11:48 AM".toText(), // "19-Mar-2023 11:48 AM".toText(),
], // ],
), // ),
], // ],
), // ),
), // ),
"1+ Requests".toText(fontSize: 10).toContainer( // "1+ Requests".toText(fontSize: 10).toContainer(
borderRadius: 15, // borderRadius: 15,
backgroundColor: MyColors.lightGreyEAColor, // backgroundColor: MyColors.lightGreyEAColor,
padding: const EdgeInsets.symmetric( // padding: const EdgeInsets.symmetric(
vertical: 6, // vertical: 6,
horizontal: 12, // horizontal: 12,
), // ),
), // ),
], // ],
), // ),
8.height, // 8.height,
Row( // Row(
crossAxisAlignment: CrossAxisAlignment.end, // crossAxisAlignment: CrossAxisAlignment.end,
children: [ // children: [
Expanded( // Expanded(
child: Column( // child: Column(
children: [ // children: [
showServices("Maintenance"), // showServices("Maintenance"),
2.height, // 2.height,
showServices("Accessories and Modification"), // showServices("Accessories and Modification"),
], // ],
), // ),
), // ),
const Icon( // const Icon(
Icons.arrow_forward, // Icons.arrow_forward,
), // ),
], // ],
), // ),
], // ],
).toWhiteContainer(width: double.infinity, allPading: 0); // ).toWhiteContainer(width: double.infinity, allPading: 0);
} // }
//
Widget showServices(String title) { // Widget showServices(String title) {
return Row( // return Row(
children: [ // children: [
const Icon( // const Icon(
Icons.ac_unit, // Icons.ac_unit,
color: MyColors.primaryColor, // color: MyColors.primaryColor,
size: 18, // size: 18,
), // ),
8.width, // 8.width,
title.toText( // title.toText(
fontSize: 14, // fontSize: 14,
isBold: true, // isBold: true,
), // ),
], // ],
); // );
} // }
} // }

@ -36,9 +36,11 @@ dependencies:
cupertino_icons: ^1.0.2 cupertino_icons: ^1.0.2
mc_common_app: mc_common_app:
path: /Volumes/Data/Projects/Flutter_Projects/car_common_app # path: /Volumes/Data/Projects/Flutter_Projects/car_common_app
# path: /Users/faizhashmi/Development/Projects/MyProjects/CloudSolutions/car_common_app # path: /Users/faizhashmi/Development/Projects/MyProjects/CloudSolutions/car_common_app
# path: /Users/aamir/StudioProjects/car_common_app # path: /Users/aamir/StudioProjects/car_common_app
path: C:/dev/Mawater/car_common_app
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:

Loading…
Cancel
Save