Merge branch 'aamir_dev' into faiz_development

aamir_dev
Faiz Hashmi 2 years ago
commit d962424650

@ -21,6 +21,6 @@
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.0</string> <string>1.0</string>
<key>MinimumOSVersion</key> <key>MinimumOSVersion</key>
<string>11.0</string> <string>12.0</string>
</dict> </dict>
</plist> </plist>

@ -156,7 +156,7 @@
97C146E61CF9000F007C117D /* Project object */ = { 97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastUpgradeCheck = 1300; LastUpgradeCheck = 1510;
ORGANIZATIONNAME = ""; ORGANIZATIONNAME = "";
TargetAttributes = { TargetAttributes = {
97C146ED1CF9000F007C117D = { 97C146ED1CF9000F007C117D = {
@ -360,7 +360,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;
@ -379,7 +379,7 @@
DEVELOPMENT_TEAM = 99Z3UD3LJM; DEVELOPMENT_TEAM = 99Z3UD3LJM;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@ -439,7 +439,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos; SDKROOT = iphoneos;
@ -488,7 +488,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;
@ -509,7 +509,7 @@
DEVELOPMENT_TEAM = 99Z3UD3LJM; DEVELOPMENT_TEAM = 99Z3UD3LJM;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@ -533,7 +533,7 @@
DEVELOPMENT_TEAM = 99Z3UD3LJM; DEVELOPMENT_TEAM = 99Z3UD3LJM;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1300" LastUpgradeVersion = "1510"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

@ -12,6 +12,7 @@ import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.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/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/general_models/widgets_models.dart'; import 'package:mc_common_app/models/general_models/widgets_models.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/enums.dart';
@ -24,7 +25,7 @@ import 'package:mc_common_app/view_models/requests_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
import 'fragments/branches_fragment.dart'; import 'fragments/branches_fragment.dart';
class DashboardPage extends StatefulWidget { class DashboardPage extends StatefulWidget {
@ -107,19 +108,19 @@ class _DashboardPageState extends State<DashboardPage> {
String getPageTitle(int index) { String getPageTitle(int index) {
if (index == 0) { if (index == 0) {
return "Branches"; return LocaleKeys.branches.tr();
} }
if (index == 1) { if (index == 1) {
return "Appointments"; return LocaleKeys.appointments.tr();
} }
if (index == 2) { if (index == 2) {
return ""; return "";
} }
if (index == 3) { if (index == 3) {
return "Ads"; return LocaleKeys.ads.tr();
} }
if (index == 4) { if (index == 4) {
return "My Requests"; return LocaleKeys.myRequests.tr();
} }
return ""; return "";
} }
@ -128,14 +129,13 @@ class _DashboardPageState extends State<DashboardPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
DashboardVmCustomer dashboardVM = context.read<DashboardVmCustomer>(); DashboardVmCustomer dashboardVM = context.read<DashboardVmCustomer>();
bool isHomePage = dashboardVM.selectedNavbarBarIndex == 2; bool isHomePage = dashboardVM.selectedNavbarBarIndex == 2;
return WillPopScope( return PopScope(
onWillPop: () async => Future.value(false), canPop: false,
child: Scaffold( child: Scaffold(
appBar: CustomAppBar( appBar: CustomAppBar(
backgroundColor: null, backgroundColor: null,
leadingWidth: 100, leadingWidth: 100,
title: getPageTitle(dashboardVM.selectedNavbarBarIndex), title: getPageTitle(dashboardVM.selectedNavbarBarIndex),
profileImageUrl: MyAssets.bnCar,
isRemoveBackButton: true, isRemoveBackButton: true,
isDrawerEnabled: isHomePage ? true : false, isDrawerEnabled: isHomePage ? true : false,
onTap: () { onTap: () {

@ -4,6 +4,7 @@ import 'package:mc_common_app/config/dependencies.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.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/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart'; import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/enums.dart';
@ -14,6 +15,7 @@ import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/common_widgets/categories_list.dart'; import 'package:mc_common_app/widgets/common_widgets/categories_list.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
class AdsFragment extends StatelessWidget { class AdsFragment extends StatelessWidget {
AdsFragment({Key? key}) : super(key: key); AdsFragment({Key? key}) : super(key: key);
@ -54,7 +56,7 @@ class AdsFragment extends StatelessWidget {
child: ShowFillButton( child: ShowFillButton(
isFilled: adVM.isExploreAdsTapped, isFilled: adVM.isExploreAdsTapped,
maxHeight: 55, maxHeight: 55,
title: "Explore Ads", title: LocaleKeys.exploreAds.tr(),
txtColor: adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor, txtColor: adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
onPressed: () { onPressed: () {
print("ads: ${AppState().getUser.data!.accessToken}"); print("ads: ${AppState().getUser.data!.accessToken}");
@ -72,7 +74,7 @@ class AdsFragment extends StatelessWidget {
isFilled: !adVM.isExploreAdsTapped, isFilled: !adVM.isExploreAdsTapped,
txtColor: !adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor, txtColor: !adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
maxHeight: 55, maxHeight: 55,
title: "My Ads", title: LocaleKeys.myAds.tr(),
onPressed: () { onPressed: () {
adVM.updateIsExploreAds(false); adVM.updateIsExploreAds(false);
}, },

@ -1,4 +1,5 @@
import 'package:mc_common_app/generated/locale_keys.g.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:mc_common_app/view_models/dashboard_view_model_customer.dart'; import 'package:mc_common_app/view_models/dashboard_view_model_customer.dart';
import 'package:mc_common_app/views/appointments/widgets/customer_appointment_slider_widget.dart'; import 'package:mc_common_app/views/appointments/widgets/customer_appointment_slider_widget.dart';
@ -12,6 +13,8 @@ import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/widgets/common_widgets/categories_list.dart'; import 'package:mc_common_app/widgets/common_widgets/categories_list.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
class AppointmentsFragment extends StatelessWidget { class AppointmentsFragment extends StatelessWidget {
const AppointmentsFragment({Key? key}) : super(key: key); const AppointmentsFragment({Key? key}) : super(key: key);
@ -45,7 +48,7 @@ class AppointmentsFragment extends StatelessWidget {
? Column( ? Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
"No Appointments to show.".toText(fontSize: 16, color: MyColors.lightTextColor), LocaleKeys.noAppointmentstoShow.tr().toText(fontSize: 16, color: MyColors.lightTextColor),
], ],
) )
: ListView.builder( : ListView.builder(

@ -41,34 +41,44 @@ class BranchesFragment extends StatelessWidget {
context.read<AppointmentsVM>().getAllNearBranches(isNeedToRebuild: true, isFromRefresh: true); context.read<AppointmentsVM>().getAllNearBranches(isNeedToRebuild: true, isFromRefresh: true);
}, },
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: MediaQuery.of(context).size.height / 1.37, height: MediaQuery.of(context).size.height / 1.37,
child: appointmentsVM.state == ViewState.busy child: appointmentsVM.state == ViewState.busy
? const Center(child: CircularProgressIndicator()) ? const Center(
: appointmentsVM.nearbyBranches.isEmpty child: CircularProgressIndicator(),
? Center(child: LocaleKeys.no_branch.tr().toText(fontSize: 16, color: MyColors.lightTextColor)) )
: ListView.separated( : appointmentsVM.nearbyBranches.isEmpty
itemCount: appointmentsVM.nearbyBranches.length, ? Center(
itemBuilder: (context, index) { child: LocaleKeys.no_branch.tr().toText(
BranchDetailModel branchDetailModel = appointmentsVM.nearbyBranches[index]; fontSize: 16,
color: MyColors.lightTextColor,
),
)
: ListView.separated(
itemCount: appointmentsVM.nearbyBranches.length,
itemBuilder: (context, index) {
BranchDetailModel branchDetailModel = appointmentsVM.nearbyBranches[index];
return ProviderDetailsCard( return ProviderDetailsCard(
onCardTapped: () { onCardTapped: () {
navigateWithName(context, AppRoutes.branchDetailPage, arguments: branchDetailModel); navigateWithName(context, AppRoutes.branchDetailPage, arguments: branchDetailModel);
}, },
providerImageUrl: MyAssets.bnCar, providerImageUrl: MyAssets.bnCar,
title: branchDetailModel.branchName ?? "", title: branchDetailModel.branchName ?? "",
providerLocation: branchDetailModel.distanceKm.toString() + " KM", providerLocation: branchDetailModel.distanceKm.toString() + " KM",
providerName: branchDetailModel.serviceProviderName ?? "", providerName: branchDetailModel.serviceProviderName ?? "",
providerRatings: "4.9", providerRatings: "4.9",
services: branchDetailModel.branchServices, services: branchDetailModel.branchServices,
); );
}, },
separatorBuilder: (context, index) { separatorBuilder: (context, index) {
return 12.height; return 12.height;
}, },
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(
)), 12,
),
),
),
), ),
), ),
], ],

@ -1,6 +1,7 @@
import 'package:car_customer_app/views/dashboard/widgets/drawer_widget.dart'; import 'package:car_customer_app/views/dashboard/widgets/drawer_widget.dart';
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/generated/locale_keys.g.dart';
import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart'; import 'package:mc_common_app/view_models/ad_view_model.dart';
import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:mc_common_app/view_models/appointments_view_model.dart';
@ -11,6 +12,8 @@ import 'package:mc_common_app/widgets/common_widgets/my_service_provider.dart';
import 'package:mc_common_app/widgets/common_widgets/view_all_widget.dart'; import 'package:mc_common_app/widgets/common_widgets/view_all_widget.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
class HomeFragment extends StatelessWidget { class HomeFragment extends StatelessWidget {
const HomeFragment({Key? key}) : super(key: key); const HomeFragment({Key? key}) : super(key: key);
@ -30,8 +33,8 @@ class HomeFragment extends StatelessWidget {
children: [ children: [
16.height, 16.height,
ViewAllWidget( ViewAllWidget(
title: "Upcoming Appointment".toUpperCase(), title: LocaleKeys.upcoming_appointment.tr().toUpperCase(),
subTitle: "View All", subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () { onSubtitleTapped: () {
context.read<DashboardVmCustomer>().onNavbarTapped(1); context.read<DashboardVmCustomer>().onNavbarTapped(1);
context.read<AppointmentsVM>().applyFilterOnAppointmentsVM(appointmentStatusEnum: AppointmentStatusEnum.allAppointments); context.read<AppointmentsVM>().applyFilterOnAppointmentsVM(appointmentStatusEnum: AppointmentStatusEnum.allAppointments);
@ -40,8 +43,8 @@ class HomeFragment extends StatelessWidget {
CustomerAppointmentSliderWidget(myUpComingAppointments: context.read<AppointmentsVM>().myUpComingAppointments), CustomerAppointmentSliderWidget(myUpComingAppointments: context.read<AppointmentsVM>().myUpComingAppointments),
7.height, 7.height,
ViewAllWidget( ViewAllWidget(
title: "My Recent Service Providers".toUpperCase(), title: LocaleKeys.my_recent_providers.tr().toUpperCase(),
subTitle: "View All", subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () { onSubtitleTapped: () {
context.read<DashboardVmCustomer>().onNavbarTapped(0); context.read<DashboardVmCustomer>().onNavbarTapped(0);
context.read<AppointmentsVM>().applyFilterOnBranches(index: 0); context.read<AppointmentsVM>().applyFilterOnBranches(index: 0);
@ -58,8 +61,8 @@ class HomeFragment extends StatelessWidget {
children: [ children: [
15.height, 15.height,
ViewAllWidget( ViewAllWidget(
title: "My Active Ads".toUpperCase(), title: LocaleKeys.my_active_Ads.tr().toUpperCase(),
subTitle: "View All", subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () { onSubtitleTapped: () {
context.read<DashboardVmCustomer>().onNavbarTapped(3); context.read<DashboardVmCustomer>().onNavbarTapped(3);
context.read<AdVM>().updateIsExploreAds(false); context.read<AdVM>().updateIsExploreAds(false);
@ -78,8 +81,8 @@ class HomeFragment extends StatelessWidget {
children: [ children: [
15.height, 15.height,
ViewAllWidget( ViewAllWidget(
title: "My Recommended Ads".toUpperCase(), title: LocaleKeys.myRecommendedAds.tr().toUpperCase(),
subTitle: "View All", subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () { onSubtitleTapped: () {
context.read<DashboardVmCustomer>().onNavbarTapped(3); context.read<DashboardVmCustomer>().onNavbarTapped(3);
context.read<AdVM>().updateIsExploreAds(true); context.read<AdVM>().updateIsExploreAds(true);

@ -1,3 +1,4 @@
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/view_models/requests_view_model.dart'; import 'package:mc_common_app/view_models/requests_view_model.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.dart';
@ -9,6 +10,8 @@ import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/views/requests/widget/request_item.dart'; import 'package:mc_common_app/views/requests/widget/request_item.dart';
import 'package:mc_common_app/widgets/common_widgets/categories_list.dart'; import 'package:mc_common_app/widgets/common_widgets/categories_list.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
class MyRequestsFragment extends StatelessWidget { class MyRequestsFragment extends StatelessWidget {
const MyRequestsFragment({super.key}); const MyRequestsFragment({super.key});
@ -40,7 +43,7 @@ class MyRequestsFragment extends StatelessWidget {
? Column( ? Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
"No Requests to show.".toText(fontSize: 16, color: MyColors.lightTextColor), LocaleKeys.noRequeststoShow.tr().toText(fontSize: 16, color: MyColors.lightTextColor),
], ],
) )
: ListView.separated( : ListView.separated(

@ -29,10 +29,10 @@ class _CustomDrawerState extends State<CustomDrawer> {
showDialog<ImageSource>( showDialog<ImageSource>(
context: context, context: context,
builder: (context) => AlertDialog( builder: (context) => AlertDialog(
content: const Text("Choose image source"), content: Text(LocaleKeys.chooseImageSource.tr()),
actions: [ actions: [
TextButton(child: const Text("Camera"), onPressed: () => widget.dashboardVM.pickImageFromPhone(context, 0)), TextButton(child: Text(LocaleKeys.camera.tr()), onPressed: () => widget.dashboardVM.pickImageFromPhone(context, 0)),
TextButton(child: const Text("Gallery"), onPressed: () => widget.dashboardVM.pickImageFromPhone(context, 1)), TextButton(child: Text(LocaleKeys.gallery.tr()), onPressed: () => widget.dashboardVM.pickImageFromPhone(context, 1)),
], ],
), ),
); );
@ -92,7 +92,7 @@ class _CustomDrawerState extends State<CustomDrawer> {
Utils.showLoading(context); Utils.showLoading(context);
ImageResponse response = await widget.dashboardVM.updateUserImage(""); ImageResponse response = await widget.dashboardVM.updateUserImage("");
if (response.messageStatus == 1) { if (response.messageStatus == 1) {
Utils.showToast("Image is Deleted"); Utils.showToast(LocaleKeys.imageIsDeleted.tr());
setState(() { setState(() {
AppState().getUser.data!.userInfo!.userImageUrl = response.data; AppState().getUser.data!.userInfo!.userImageUrl = response.data;
}); });
@ -118,7 +118,7 @@ class _CustomDrawerState extends State<CustomDrawer> {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"userName".toText( LocaleKeys.profile_reset_password_username.toText(
isBold: true, isBold: true,
fontSize: 20, fontSize: 20,
letterSpacing: -1.44, letterSpacing: -1.44,

@ -37,7 +37,7 @@ class _BranchDetailPageState extends State<BranchDetailPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: CustomAppBar( appBar: CustomAppBar(
title: "Branch Detail", title: LocaleKeys.branchDetail.tr(),
onBackButtonTapped: () { onBackButtonTapped: () {
context.read<AppointmentsVM>().resetCategorySelectionBottomSheet(); context.read<AppointmentsVM>().resetCategorySelectionBottomSheet();
Navigator.pop(context); Navigator.pop(context);
@ -70,7 +70,7 @@ class _BranchDetailPageState extends State<BranchDetailPage> {
), ),
Row( Row(
children: [ children: [
("Time" + ":").toText(color: MyColors.lightTextColor, fontSize: 12), (LocaleKeys.time.tr() + ":").toText(color: MyColors.lightTextColor, fontSize: 12),
4.width, 4.width,
"${widget.branchDetailModel.openTime} - ${widget.branchDetailModel.closeTime}".toText(fontSize: 12, isBold: true), "${widget.branchDetailModel.openTime} - ${widget.branchDetailModel.closeTime}".toText(fontSize: 12, isBold: true),
], ],
@ -83,13 +83,12 @@ class _BranchDetailPageState extends State<BranchDetailPage> {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
//TODO: Needs to implement url launcher LocaleKeys.openMapLocation.tr().toText(
"Open Map Location".toText( fontSize: 12,
fontSize: 12, isBold: true,
isBold: true, color: MyColors.primaryColor,
color: MyColors.primaryColor, isUnderLine: true,
isUnderLine: true, ),
),
4.width, 4.width,
Image.asset( Image.asset(
MyAssets.icRightUpPng, MyAssets.icRightUpPng,
@ -103,12 +102,12 @@ class _BranchDetailPageState extends State<BranchDetailPage> {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
"Provider Profile".toText( LocaleKeys.providerProfile.tr().toText(
fontSize: 12, fontSize: 12,
isBold: true, isBold: true,
color: MyColors.primaryColor, color: MyColors.primaryColor,
isUnderLine: true, isUnderLine: true,
), ),
2.width, 2.width,
Icon( Icon(
Icons.arrow_forward, Icons.arrow_forward,
@ -122,12 +121,12 @@ class _BranchDetailPageState extends State<BranchDetailPage> {
], ],
), ),
20.height, 20.height,
"Services Offer".toText( LocaleKeys.servicesOffer.tr().toText(
fontSize: 16, fontSize: 16,
color: MyColors.lightTextColor, color: MyColors.lightTextColor,
isBold: true, isBold: true,
), ),
if (widget.branchDetailModel.branchServices!.length == 0) "No Services Available".toText(fontSize: 12, isBold: true), if (widget.branchDetailModel.branchServices!.length == 0) LocaleKeys.noServicesAvailable.tr().toText(fontSize: 12, isBold: true),
showServicesList(), showServicesList(),
], ],
).toWhiteContainer( ).toWhiteContainer(
@ -140,7 +139,7 @@ class _BranchDetailPageState extends State<BranchDetailPage> {
), ),
), ),
ShowFillButton( ShowFillButton(
title: "Book Appointment", title: LocaleKeys.bookAppointment.tr(),
maxWidth: double.infinity, maxWidth: double.infinity,
margin: EdgeInsets.all(21), margin: EdgeInsets.all(21),
onPressed: () { onPressed: () {
@ -166,9 +165,9 @@ class _BranchDetailPageState extends State<BranchDetailPage> {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
showItem("Allowing home service:", (widget.branchDetailModel.branchServices![index].isAllowAppointment ?? false) ? "Yes" : "No", valueColor: Colors.green), showItem(LocaleKeys.allowingHomeService.tr() + " :", (widget.branchDetailModel.branchServices![index].isAllowAppointment ?? false) ? "Yes" : "No", valueColor: Colors.green),
showItem("Home service range", widget.branchDetailModel.branchServices![index].customerLocationRange.toString() + "KM"), showItem(LocaleKeys.homeServiceRange.tr() + " :", widget.branchDetailModel.branchServices![index].customerLocationRange.toString() + "KM"),
showItem("Charges per KM", widget.branchDetailModel.branchServices![index].customerLocationRange.toString() + "SAR"), 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() + " items"

@ -34,7 +34,7 @@ class _ProviderProfilePageState extends State<ProviderProfilePage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: CustomAppBar( appBar: CustomAppBar(
title: "Provider Details", title: LocaleKeys.providerDetails.tr(),
), ),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
@ -70,7 +70,7 @@ class _ProviderProfilePageState extends State<ProviderProfilePage> {
4.height, 4.height,
//TODO: company description not added form provider app yet //TODO: company description not added form provider app yet
// model.providerModel!.data!.companyDescription!.toText(color: MyColors.lightTextColor, fontSize: 12), // model.providerModel!.data!.companyDescription!.toText(color: MyColors.lightTextColor, fontSize: 12),
"Some description about the provider and their years of experience and their reputation".toText(color: MyColors.lightTextColor, fontSize: 12), LocaleKeys.someDescriptionExperienceandtheirReputation.tr().toText(color: MyColors.lightTextColor, fontSize: 12),
], ],
).toWhiteContainer( ).toWhiteContainer(
width: double.infinity, width: double.infinity,
@ -78,7 +78,7 @@ class _ProviderProfilePageState extends State<ProviderProfilePage> {
), ),
12.height, 12.height,
model.providerProfileModel!.serviceProviderBranch == null model.providerProfileModel!.serviceProviderBranch == null
? const Center(child: Text("No Branch Found")) ? Center(child: Text(LocaleKeys.noBranchFound))
: model.providerProfileModel!.serviceProviderBranch!.isEmpty : model.providerProfileModel!.serviceProviderBranch!.isEmpty
? Center(child: Text(LocaleKeys.no_branch.tr())) ? Center(child: Text(LocaleKeys.no_branch.tr()))
: ListView.separated( : ListView.separated(

@ -1,3 +1,4 @@
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/services_models/item_model.dart'; import 'package:mc_common_app/models/services_models/item_model.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:flutter/material.dart'; import 'package:flutter/material.dart';
@ -7,6 +8,8 @@ import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/widgets/empty_widget.dart'; import 'package:mc_common_app/widgets/empty_widget.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
class ItemsListSheet extends StatefulWidget { class ItemsListSheet extends StatefulWidget {
final int serviceId; final int serviceId;
@ -49,11 +52,11 @@ class _ItemsListSheetState extends State<ItemsListSheet> {
children: [ children: [
serviceItemModel.name.toString().toText(fontSize: 16, isBold: true), serviceItemModel.name.toString().toText(fontSize: 16, isBold: true),
4.height, 4.height,
showItem("Available for appointment:", (serviceItemModel.isAllowAppointment ?? false) ? "Yes" : "No", valueColor: Colors.green), showItem(LocaleKeys.availableforAppointment.tr() + ":", (serviceItemModel.isAllowAppointment ?? false) ? "Yes" : "No", valueColor: Colors.green),
showItem("Allowing Workshop service:", (serviceItemModel.isAppointmentCompanyLoc ?? false) ? "Yes" : "No", valueColor: Colors.green), showItem(LocaleKeys.allowingWorkshopService.tr() + ":", (serviceItemModel.isAppointmentCompanyLoc ?? false) ? "Yes" : "No", valueColor: Colors.green),
showItem("Allowing home service:", (serviceItemModel.isAppointmentCustomerLoc ?? false) ? "Yes" : "No", valueColor: Colors.green), showItem(LocaleKeys.allowingHomeService.tr() + ":", (serviceItemModel.isAppointmentCustomerLoc ?? false) ? "Yes" : "No", valueColor: Colors.green),
12.height, 12.height,
"Service Amount".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true), LocaleKeys.serviceAmount.tr().toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
@ -61,7 +64,7 @@ class _ItemsListSheetState extends State<ItemsListSheet> {
2.width, 2.width,
Padding( Padding(
padding: const EdgeInsets.only(bottom: 4), padding: const EdgeInsets.only(bottom: 4),
child: "SAR".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true), child: LocaleKeys.sar.tr().toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true),
), ),
], ],
), ),

@ -36,7 +36,7 @@ dependencies:
cupertino_icons: ^1.0.2 cupertino_icons: ^1.0.2
mc_common_app: mc_common_app:
path: /Volumes/Data/Projects/Flutter/car_common_app path: /Users/amir/StudioProjects/car_common_app
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:

Loading…
Cancel
Save