From ab723b4b976295da1a9a9d1da55a5b0b772873fc Mon Sep 17 00:00:00 2001 From: FaizHashmiCS22 Date: Wed, 21 Jun 2023 10:14:01 +0300 Subject: [PATCH] Merged the code --- lib/config/customer_routes.dart | 4 +- lib/main.dart | 9 +-- lib/repositories/provider_repo.dart | 27 ++++---- lib/view_models/appointments_view_model.dart | 61 ++++++++++++++++- lib/view_models/providers_view_model.dart | 67 ------------------- lib/views/dashboard/dashboard_page.dart | 6 +- .../fragments/branches_fragment.dart | 60 ++++++++--------- .../dashboard/fragments/home_fragment.dart | 3 +- .../fragments/providers_fragment.dart | 9 ++- lib/views/provider/branch_detail_page.dart | 45 +++++++------ lib/views/provider/provider_profile_page.dart | 10 +-- .../provider/sheet/items_list_sheet.dart | 13 ++-- pubspec.yaml | 2 +- 13 files changed, 144 insertions(+), 172 deletions(-) delete mode 100644 lib/view_models/providers_view_model.dart diff --git a/lib/config/customer_routes.dart b/lib/config/customer_routes.dart index f68dfef..7c9b98a 100644 --- a/lib/config/customer_routes.dart +++ b/lib/config/customer_routes.dart @@ -8,7 +8,7 @@ import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart'; import 'package:mc_common_app/models/appointments_models/appointment_list_model.dart'; -import 'package:mc_common_app/models/services/branch_model.dart'; +import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/views/advertisement/ads_detail_view.dart'; import 'package:mc_common_app/views/advertisement/create_ad_view.dart'; import 'package:mc_common_app/views/payments/payment_methods_view.dart'; @@ -22,7 +22,7 @@ class CustomerAppRoutes { AppRoutes.createAdView: (context) => CreateAdView(), AppRoutes.bookAppointmenServicesView: (context) => BookAppointmentServicesView(), AppRoutes.paymentMethodsView: (context) => PaymentMethodsView(), - AppRoutes.branchDetailPage: (context) => BranchDetailPage(branchModel: ModalRoute.of(context)!.settings.arguments as BranchModel), + AppRoutes.branchDetailPage: (context) => BranchDetailPage(branchDetailModel: ModalRoute.of(context)!.settings.arguments as BranchDetailModel), AppRoutes.providerProfilePage: (context) => ProviderProfilePage(providerId: ModalRoute.of(context)!.settings.arguments as int), }; } diff --git a/lib/main.dart b/lib/main.dart index e053104..b3bd097 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,7 +3,6 @@ import 'package:car_customer_app/config/customer_routes.dart'; import 'package:car_customer_app/repositories/provider_repo.dart'; import 'package:car_customer_app/view_models/appointments_view_model.dart'; import 'package:car_customer_app/view_models/dashboard_view_model.dart'; -import 'package:car_customer_app/view_models/providers_view_model.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.dart'; @@ -53,15 +52,9 @@ Future main() async { adsRepo: injector.get(), ), ), - ChangeNotifierProvider( - create: (_) => ProvidersVM( - commonServices: injector.get(), - commonRepo: injector.get(), - providerRepo: injector.get(), - ), - ), ChangeNotifierProvider( create: (_) => AppointmentsVM( + providerRepo: injector.get(), commonServices: injector.get(), commonRepo: injector.get(), ), diff --git a/lib/repositories/provider_repo.dart b/lib/repositories/provider_repo.dart index d92a66d..c354ace 100644 --- a/lib/repositories/provider_repo.dart +++ b/lib/repositories/provider_repo.dart @@ -1,21 +1,17 @@ import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:mc_common_app/models/model/provider_model.dart'; -import 'package:mc_common_app/models/services/item_model.dart'; -import 'package:mc_common_app/models/services/near_branch_model.dart'; -import 'package:http/http.dart' as http; +import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/api/api_client.dart'; import 'package:mc_common_app/classes/app_state.dart'; - import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/dependencies.dart'; - -import 'package:flutter/cupertino.dart'; +import 'package:mc_common_app/models/generic_resp_model.dart'; +import 'package:mc_common_app/models/model/provider_model.dart'; +import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; +import 'package:mc_common_app/models/services/item_model.dart'; abstract class ProviderRepo { - Future getAllNearBranchAndServices(); + Future> getAllNearBranchAndServices(); Future getServiceItems(int serviceId); @@ -23,11 +19,14 @@ abstract class ProviderRepo { } class ProviderRepoImp implements ProviderRepo { + ApiClient apiClient = injector.get(); + AppState appState = injector.get(); + @override - Future getAllNearBranchAndServices() async { - // var postParams = {"serviceProviderID": AppState().getUser.data?.userInfo?.providerId.toString() ?? ""}; - String t = AppState().getUser.data!.accessToken ?? ""; - return await injector.get().getJsonForObject((json) => NearBrancheModel.fromJson(json), ApiConsts.GetAllNearBranches, token: t); + Future> getAllNearBranchAndServices() async { + GenericRespModel adsGenericModel = await apiClient.getJsonForObject((json) => GenericRespModel.fromJson(json), ApiConsts.GetAllNearBranches, token: appState.getUser.data!.accessToken); + List nearBranches = List.generate(adsGenericModel.data.length, (index) => BranchDetailModel.fromJson(adsGenericModel.data[index])); + return nearBranches; } @override diff --git a/lib/view_models/appointments_view_model.dart b/lib/view_models/appointments_view_model.dart index 2fb9aa2..6371923 100644 --- a/lib/view_models/appointments_view_model.dart +++ b/lib/view_models/appointments_view_model.dart @@ -1,16 +1,22 @@ -import 'package:flutter/cupertino.dart'; +import 'package:car_customer_app/repositories/provider_repo.dart'; import 'package:mc_common_app/models/appointments_models/appointment_list_model.dart'; +import 'package:mc_common_app/models/model/provider_model.dart'; +import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/models/provider_category_model.dart'; import 'package:mc_common_app/models/provider_service_model.dart'; +import 'package:mc_common_app/models/services/item_model.dart'; import 'package:mc_common_app/models/widgets_models.dart'; import 'package:mc_common_app/repositories/common_repo.dart'; import 'package:mc_common_app/services/common_services.dart'; +import 'package:mc_common_app/utils/enums.dart'; +import 'package:mc_common_app/view_models/base_view_model.dart'; -class AppointmentsVM extends ChangeNotifier { +class AppointmentsVM extends BaseVM { final CommonRepo commonRepo; final CommonAppServices commonServices; + final ProviderRepo providerRepo; - AppointmentsVM({required this.commonServices, required this.commonRepo}); + AppointmentsVM({required this.commonServices, required this.providerRepo, required this.commonRepo}); bool isFetchingLists = false; @@ -99,4 +105,53 @@ class AppointmentsVM extends ChangeNotifier { isFetchingLists = false; notifyListeners(); } + + List providersFilterOptions = []; + List nearbyBranches = []; + ItemModel? serviceItems; + ProviderModel? providerModel; + + populateProvidersFilterList() { + providersFilterOptions.clear(); + providersFilterOptions = [ + FilterListModel(title: "All Providers", isSelected: true, id: -1), + FilterListModel(title: "Maintenance", isSelected: false, id: 0), + FilterListModel(title: "Oil Service", isSelected: false, id: 1), + FilterListModel(title: "Accessories", isSelected: false, id: 2), + FilterListModel(title: "Tire Service", isSelected: false, id: 3), + FilterListModel(title: "Dent and Paint", isSelected: false, id: 4), + ]; + notifyListeners(); + } + + applyFilterOnProviders({required int index}) { + if (providersFilterOptions.isEmpty) return; + for (var value in providersFilterOptions) { + value.isSelected = false; + } + providersFilterOptions[index].isSelected = true; + notifyListeners(); + } + + //Create new branch + getAllNearBranches({bool isNeedToRebuild = false}) async { + //TODO: needs to lat,long into API + nearbyBranches.clear(); + if (isNeedToRebuild) setState(ViewState.busy); + nearbyBranches = await providerRepo.getAllNearBranchAndServices(); + setState(ViewState.idle); + } + + Future getServiceItems(int serviceId) async { + serviceItems = null; + serviceItems = await providerRepo.getServiceItems(serviceId); + setState(ViewState.idle); + return serviceItems; + } + + getBranchAndServices(int providerId) async { + providerModel = null; + providerModel = await providerRepo.getBranchAndServices(providerId); + setState(ViewState.idle); + } } diff --git a/lib/view_models/providers_view_model.dart b/lib/view_models/providers_view_model.dart deleted file mode 100644 index 568f713..0000000 --- a/lib/view_models/providers_view_model.dart +++ /dev/null @@ -1,67 +0,0 @@ -import 'package:mc_common_app/models/model/provider_model.dart'; -import 'package:mc_common_app/models/services/item_model.dart'; -import 'package:mc_common_app/models/services/near_branch_model.dart'; -import 'package:car_customer_app/repositories/provider_repo.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:mc_common_app/models/widgets_models.dart'; -import 'package:mc_common_app/repositories/common_repo.dart'; -import 'package:mc_common_app/services/common_services.dart'; -import 'package:mc_common_app/utils/enums.dart'; -import 'package:mc_common_app/view_models/base_view_model.dart'; - -class ProvidersVM extends BaseVM { - final CommonRepo commonRepo; - final CommonAppServices commonServices; - final ProviderRepo providerRepo; - - ProvidersVM({required this.commonServices, required this.commonRepo, required this.providerRepo}); - - List providersFilterOptions = []; - NearBrancheModel? branches; - ItemModel? serviceItems; - ProviderModel? providerModel; - - populateProvidersFilterList() { - providersFilterOptions.clear(); - providersFilterOptions = [ - FilterListModel(title: "All Providers", isSelected: true, id: -1), - FilterListModel(title: "Maintenance", isSelected: false, id: 0), - FilterListModel(title: "Oil Service", isSelected: false, id: 1), - FilterListModel(title: "Accessories", isSelected: false, id: 2), - FilterListModel(title: "Tire Service", isSelected: false, id: 3), - FilterListModel(title: "Dent and Paint", isSelected: false, id: 4), - ]; - notifyListeners(); - } - - applyFilterOnProviders({required int index}) { - if (providersFilterOptions.isEmpty) return; - for (var value in providersFilterOptions) { - value.isSelected = false; - } - providersFilterOptions[index].isSelected = true; - notifyListeners(); - } - - //Create new branch - getAllNearBranches({bool isNeedToRebuild = false}) async { - //TODO: needs to lat,long into API - branches = null; - if (isNeedToRebuild) setState(ViewState.busy); - branches = await providerRepo.getAllNearBranchAndServices(); - setState(ViewState.idle); - } - - Future getServiceItems(int serviceId) async { - serviceItems = null; - serviceItems = await providerRepo.getServiceItems(serviceId); - setState(ViewState.idle); - return serviceItems; - } - - getBranchAndServices(int providerId) async { - providerModel = null; - providerModel = await providerRepo.getBranchAndServices(providerId); - setState(ViewState.idle); - } -} diff --git a/lib/views/dashboard/dashboard_page.dart b/lib/views/dashboard/dashboard_page.dart index 1c9fa86..abae722 100644 --- a/lib/views/dashboard/dashboard_page.dart +++ b/lib/views/dashboard/dashboard_page.dart @@ -2,11 +2,9 @@ import 'dart:async'; import 'package:car_customer_app/view_models/appointments_view_model.dart'; import 'package:car_customer_app/view_models/dashboard_view_model.dart'; -import 'package:car_customer_app/view_models/providers_view_model.dart'; import 'package:car_customer_app/views/dashboard/fragments/ads_fragment.dart'; import 'package:car_customer_app/views/dashboard/fragments/appointments_fragment.dart'; import 'package:car_customer_app/views/dashboard/fragments/home_fragment.dart'; -import 'package:car_customer_app/views/dashboard/fragments/providers_fragment.dart'; import 'package:car_customer_app/views/dashboard/fragments/settings_fragment.dart'; import 'package:car_customer_app/views/dashboard/widgets/bottom_nav_bar.dart'; import 'package:car_customer_app/views/dashboard/widgets/drawer_widget.dart'; @@ -36,9 +34,9 @@ class _DashboardPageState extends State { fetchUsername(); scheduleMicrotask(() { context.read().populateAppointmentsFilterList(); - context.read().populateProvidersFilterList(); + context.read().populateProvidersFilterList(); context.read().populateAdsFilterList(); - context.read().getAllNearBranches(); + context.read().getAllNearBranches(); _onRefresh(); }); } diff --git a/lib/views/dashboard/fragments/branches_fragment.dart b/lib/views/dashboard/fragments/branches_fragment.dart index d0ab34c..bca8f61 100644 --- a/lib/views/dashboard/fragments/branches_fragment.dart +++ b/lib/views/dashboard/fragments/branches_fragment.dart @@ -1,17 +1,18 @@ -import 'package:car_customer_app/view_models/providers_view_model.dart'; +import 'package:car_customer_app/view_models/appointments_view_model.dart'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; - import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/extensions/int_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/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.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/provider_details_card.dart'; import 'package:provider/provider.dart'; -import 'package:easy_localization/easy_localization.dart'; class BranchesFragment extends StatelessWidget { const BranchesFragment({Key? key}) : super(key: key); @@ -23,53 +24,52 @@ class BranchesFragment extends StatelessWidget { width: double.infinity, height: double.infinity, child: Consumer( - builder: (BuildContext context, ProvidersVM providersVM, Widget? child) { + builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) { return Column( children: [ 16.height, FiltersList( - filterList: providersVM.providersFilterOptions, - onFilterTapped: (index, selectedFilterId) => providersVM.applyFilterOnProviders(index: index), + filterList: appointmentsVM.providersFilterOptions, + onFilterTapped: (index, selectedFilterId) => appointmentsVM.applyFilterOnProviders(index: index), ), 16.height, Expanded( child: RefreshIndicator( onRefresh: () async { - context.read().getAllNearBranches(isNeedToRebuild: true); + context.read().getAllNearBranches(isNeedToRebuild: true); }, child: SingleChildScrollView( child: Container( width: double.infinity, height: MediaQuery.of(context).size.height / 1.37, - child: Consumer( + child: Consumer( builder: (context, model, _) { if (model.state == ViewState.busy) { return const Center(child: CircularProgressIndicator()); } else { - return model.branches?.data == null - ? const Center(child: Text("No Branch Found")) - : model.branches!.data!.isEmpty - ? Center(child: Text(LocaleKeys.no_branch.tr())) - : ListView.separated( - itemBuilder: (context, index) { - return ProviderDetailsCard( - onCardTapped: () { - navigateWithName(context, AppRoutes.branchDetailPage, arguments: model.branches!.data![index]); - }, - providerImageUrl: MyAssets.bnCar, - title: model.branches!.data![index].branchName ?? "", - providerLocation: model.branches!.data![index].distanceKm.toString() + " KM", - providerName: model.branches!.data![index].serviceProviderName ?? "", - providerRatings: "4.9", - items: model.branches!.data![index].branchServices, - ); - }, - separatorBuilder: (context, index) { - return 12.height; + return model.nearbyBranches.isEmpty + ? Center(child: LocaleKeys.no_branch.tr().toText(fontSize: 16, color: MyColors.lightTextColor)) + : ListView.separated( + itemCount: model.nearbyBranches.length, + itemBuilder: (context, index) { + BranchDetailModel branchDetailModel = model.nearbyBranches[index]; + return ProviderDetailsCard( + onCardTapped: () { + navigateWithName(context, AppRoutes.branchDetailPage, arguments: branchDetailModel); }, - itemCount: model.branches!.data!.length, - padding: const EdgeInsets.all(12), + providerImageUrl: MyAssets.bnCar, + title: branchDetailModel.branchName ?? "", + providerLocation: branchDetailModel.distanceKm.toString() + " KM", + providerName: branchDetailModel.serviceProviderName ?? "", + providerRatings: "4.9", + items: branchDetailModel.branchServices, ); + }, + separatorBuilder: (context, index) { + return 12.height; + }, + padding: const EdgeInsets.all(12), + ); } }, ), diff --git a/lib/views/dashboard/fragments/home_fragment.dart b/lib/views/dashboard/fragments/home_fragment.dart index c7c4d6b..9d10167 100644 --- a/lib/views/dashboard/fragments/home_fragment.dart +++ b/lib/views/dashboard/fragments/home_fragment.dart @@ -1,6 +1,5 @@ import 'package:car_customer_app/view_models/appointments_view_model.dart'; import 'package:car_customer_app/view_models/dashboard_view_model.dart'; -import 'package:car_customer_app/view_models/providers_view_model.dart'; import 'package:car_customer_app/views/appointments/widgets/customer_appointment_slider_widget.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.dart'; @@ -43,7 +42,7 @@ class HomeFragment extends StatelessWidget { onSubtitleTapped: () { print("value: ${AppState().getUser.data!.accessToken}"); context.read().onNavbarTapped(0); - context.read().applyFilterOnProviders(index: 0); + context.read().applyFilterOnProviders(index: 0); }).horPaddingMain(), const ServiceProviderWidget().horPaddingMain(), Consumer( diff --git a/lib/views/dashboard/fragments/providers_fragment.dart b/lib/views/dashboard/fragments/providers_fragment.dart index 09e6dab..9419afd 100644 --- a/lib/views/dashboard/fragments/providers_fragment.dart +++ b/lib/views/dashboard/fragments/providers_fragment.dart @@ -1,5 +1,4 @@ import 'package:car_customer_app/view_models/appointments_view_model.dart'; -import 'package:car_customer_app/view_models/providers_view_model.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/routes.dart'; @@ -20,13 +19,13 @@ class ProvidersFragment extends StatelessWidget { width: double.infinity, height: double.infinity, child: Consumer( - builder: (BuildContext context, ProvidersVM providersVM, Widget? child) { + builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) { return Column( children: [ 16.height, FiltersList( - filterList: providersVM.providersFilterOptions, - onFilterTapped: (index, selectedFilterId) => providersVM.applyFilterOnProviders(index: index), + filterList: appointmentsVM.providersFilterOptions, + onFilterTapped: (index, selectedFilterId) => appointmentsVM.applyFilterOnProviders(index: index), ), 16.height, Expanded( @@ -43,7 +42,7 @@ class ProvidersFragment extends StatelessWidget { navigateWithName(context, AppRoutes.bookAppointmenServicesView); }, providerImageUrl: MyAssets.bnCar, - title:"", + title: "", providerLocation: " 3km", providerName: "Al Ahmed Maintenance", providerRatings: "4.9", diff --git a/lib/views/provider/branch_detail_page.dart b/lib/views/provider/branch_detail_page.dart index dbace34..654e6e1 100644 --- a/lib/views/provider/branch_detail_page.dart +++ b/lib/views/provider/branch_detail_page.dart @@ -1,13 +1,12 @@ import 'package:car_customer_app/views/provider/sheet/items_list_sheet.dart'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/extensions/int_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/services/branch_model.dart'; -import 'package:easy_localization/easy_localization.dart'; -import 'package:mc_common_app/models/services/service_model.dart'; +import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/widgets/bottom_sheet.dart'; @@ -16,9 +15,9 @@ import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; class BranchDetailPage extends StatefulWidget { - BranchModel branchModel; + final BranchDetailModel branchDetailModel; - BranchDetailPage({required this.branchModel}); + BranchDetailPage({required this.branchDetailModel}); @override State createState() => _BranchDetailPageState(); @@ -29,7 +28,7 @@ class _BranchDetailPageState extends State { void initState() { // TODO: implement initState super.initState(); - if (widget.branchModel.branchServices!.length > 0) widget.branchModel.branchServices?.first.isExpanded = true; + if (widget.branchDetailModel.branchServices!.length > 0) widget.branchDetailModel.branchServices?.first.isExpanded = true; } @override @@ -52,7 +51,7 @@ class _BranchDetailPageState extends State { children: [ Image.asset(MyAssets.bnCar), 12.height, - "${widget.branchModel.branchName} | ${widget.branchModel.serviceProviderName}".toString().toText( + "${widget.branchDetailModel.branchName} | ${widget.branchDetailModel.serviceProviderName}".toString().toText( fontSize: 16, isBold: true, ), @@ -60,14 +59,14 @@ class _BranchDetailPageState extends State { children: [ (LocaleKeys.location.tr() + ":").toText(color: MyColors.lightTextColor, fontSize: 12), 4.width, - (widget.branchModel.distanceKm.toString() + " km").toText(fontSize: 12, isBold: true), + (widget.branchDetailModel.distanceKm.toString() + " km").toText(fontSize: 12, isBold: true), ], ), Row( children: [ ("Time" + ":").toText(color: MyColors.lightTextColor, fontSize: 12), 4.width, - "${widget.branchModel.openTime} - ${widget.branchModel.closeTime}".toText(fontSize: 12, isBold: true), + "${widget.branchDetailModel.openTime} - ${widget.branchDetailModel.closeTime}".toText(fontSize: 12, isBold: true), ], ), 2.height, @@ -123,7 +122,7 @@ class _BranchDetailPageState extends State { ) .onPress( () { - navigateWithName(context, AppRoutes.providerProfilePage, arguments: widget.branchModel.serviceProviderId); + navigateWithName(context, AppRoutes.providerProfilePage, arguments: widget.branchDetailModel.serviceProviderId); }, ), ], @@ -134,7 +133,7 @@ class _BranchDetailPageState extends State { color: MyColors.lightTextColor, isBold: true, ), - if (widget.branchModel.branchServices!.length == 0) "No Services Available".toText(fontSize: 12, isBold: true), + if (widget.branchDetailModel.branchServices!.length == 0) "No Services Available".toText(fontSize: 12, isBold: true), showServicesList(), ], ).toWhiteContainer( @@ -150,7 +149,9 @@ class _BranchDetailPageState extends State { title: "Book Appointment", maxWidth: double.infinity, margin: EdgeInsets.all(21), - onPressed: () {}, + onPressed: () { + navigateWithName(context, AppRoutes.bookAppointmenServicesView); + }, ).toContainer( paddingAll: 0, backgroundColor: Colors.white, @@ -165,7 +166,7 @@ class _BranchDetailPageState extends State { itemBuilder: (context, index) { return ExpansionTile( tilePadding: EdgeInsets.zero, - title: (widget.branchModel.branchServices![index].serviceDescription ?? "").toText( + title: (widget.branchDetailModel.branchServices![index].serviceDescription ?? "").toText( fontSize: 16, isBold: true, ), @@ -173,11 +174,11 @@ class _BranchDetailPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - showItem("Allowing home service:", (widget.branchModel.branchServices![index].isAllowAppointment ?? false) ? "Yes" : "No", valueColor: Colors.green), - showItem("Home service range", widget.branchModel.branchServices![index].customerLocationRange.toString() + "KM"), - showItem("Charges per KM", widget.branchModel.branchServices![index].customerLocationRange.toString() + "SAR"), + showItem("Allowing home service:", (widget.branchDetailModel.branchServices![index].isAllowAppointment ?? false) ? "Yes" : "No", valueColor: Colors.green), + showItem("Home service range", widget.branchDetailModel.branchServices![index].customerLocationRange.toString() + "KM"), + showItem("Charges per KM", widget.branchDetailModel.branchServices![index].customerLocationRange.toString() + "SAR"), 8.height, - (widget.branchModel.branchServices![index].itemsCount.toString() + "+ items").toText( + (widget.branchDetailModel.branchServices![index].itemsCount.toString() + "+ items").toText( fontSize: 12, isBold: true, color: MyColors.primaryColor, @@ -186,18 +187,18 @@ class _BranchDetailPageState extends State { 20.height, ], ).onPress(() { - showMyBottomSheet(context, child: ItemsListSheet(widget.branchModel.branchServices![index].serviceProviderServiceId ?? 0)); + showMyBottomSheet(context, child: ItemsListSheet(widget.branchDetailModel.branchServices![index].serviceProviderServiceId ?? 0)); }), ], onExpansionChanged: (value) { setState(() { - widget.branchModel.branchServices![index].isExpanded = value; + widget.branchDetailModel.branchServices![index].isExpanded = value; }); }, backgroundColor: Colors.transparent, collapsedBackgroundColor: Colors.transparent, - initiallyExpanded: widget.branchModel.branchServices![index].isExpanded, - trailing: widget.branchModel.branchServices![index].isExpanded ? Icon(Icons.keyboard_arrow_up) : Icon(Icons.keyboard_arrow_down), + initiallyExpanded: widget.branchDetailModel.branchServices![index].isExpanded, + trailing: widget.branchDetailModel.branchServices![index].isExpanded ? Icon(Icons.keyboard_arrow_up) : Icon(Icons.keyboard_arrow_down), ); }, separatorBuilder: (context, index) { @@ -205,7 +206,7 @@ class _BranchDetailPageState extends State { height: 1, ); }, - itemCount: widget.branchModel.branchServices!.length, + itemCount: widget.branchDetailModel.branchServices!.length, physics: NeverScrollableScrollPhysics(), shrinkWrap: true, ); diff --git a/lib/views/provider/provider_profile_page.dart b/lib/views/provider/provider_profile_page.dart index a16f39f..e895682 100644 --- a/lib/views/provider/provider_profile_page.dart +++ b/lib/views/provider/provider_profile_page.dart @@ -1,4 +1,5 @@ -import 'package:car_customer_app/view_models/providers_view_model.dart'; +import 'package:car_customer_app/view_models/appointments_view_model.dart'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/routes.dart'; @@ -12,10 +13,9 @@ import 'package:mc_common_app/widgets/common_widgets/provider_details_card.dart' import 'package:mc_common_app/widgets/empty_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; -import 'package:easy_localization/easy_localization.dart'; class ProviderProfilePage extends StatefulWidget { - int providerId; + final int providerId; ProviderProfilePage({required this.providerId}); @@ -27,7 +27,7 @@ class _ProviderProfilePageState extends State { @override void initState() { super.initState(); - context.read().getBranchAndServices(widget.providerId ?? 0); + context.read().getBranchAndServices(widget.providerId ?? 0); } @override @@ -40,7 +40,7 @@ class _ProviderProfilePageState extends State { width: double.infinity, height: double.infinity, padding: EdgeInsets.all(21), - child: Consumer( + child: Consumer( builder: (context, model, _) { return model.providerModel == null ? const Center(child: CircularProgressIndicator()) diff --git a/lib/views/provider/sheet/items_list_sheet.dart b/lib/views/provider/sheet/items_list_sheet.dart index 63a8fbf..7870b53 100644 --- a/lib/views/provider/sheet/items_list_sheet.dart +++ b/lib/views/provider/sheet/items_list_sheet.dart @@ -1,19 +1,14 @@ -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:flutter/cupertino.dart'; +import 'package:car_customer_app/view_models/appointments_view_model.dart'; import 'package:flutter/material.dart'; -import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/theme/colors.dart'; -import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/widgets/empty_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; -import '../../../view_models/providers_view_model.dart'; - class ItemsListSheet extends StatefulWidget { - int serviceId; + final int serviceId; ItemsListSheet(this.serviceId); @@ -25,14 +20,14 @@ class _ItemsListSheetState extends State { @override void initState() { super.initState(); - context.read().getServiceItems(widget.serviceId ?? 0); + context.read().getServiceItems(widget.serviceId); } @override Widget build(BuildContext context) { return SizedBox( height: MediaQuery.of(context).size.height / 1.2, - child: Consumer( + child: Consumer( builder: (context, model, _) { return model.serviceItems == null ? const Center(child: CircularProgressIndicator()) diff --git a/pubspec.yaml b/pubspec.yaml index 46981f4..c845519 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,7 +36,7 @@ dependencies: cupertino_icons: ^1.0.2 mc_common_app: - path: C:/Users/mirza.shafique/AndroidStudioProjects/mc_common_app + path: D:/Development/car_common_app/ dev_dependencies: flutter_test: