diff --git a/lib/main.dart b/lib/main.dart index b686918..d017a79 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -190,3 +190,5 @@ class MyApp extends StatelessWidget { ); } } + + diff --git a/lib/views/branch_management/branch/branch_detail_page.dart b/lib/views/branch_management/branch/branch_detail_page.dart index 315fea3..45479bf 100644 --- a/lib/views/branch_management/branch/branch_detail_page.dart +++ b/lib/views/branch_management/branch/branch_detail_page.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:developer'; import 'package:car_provider_app/view_models/schedule_view_model.dart'; import 'package:car_provider_app/views/branch_management/branch/dealer/widget/assign_dealer_user_sheet.dart'; @@ -13,6 +14,7 @@ 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/models/provider_branches_models/profile/categroy.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'; @@ -296,7 +298,7 @@ class _BranchDetailPageState extends State { .margin(right: 5), ).onPress(() { if (widget.branchData.branchStatus == BranchStatusEnum.pending || widget.branchData.branchStatus == BranchStatusEnum.rejected) { - Utils.showToast("Please wait for the branch verification."); + Utils.showToast(LocaleKeys.waitForBranchVerification.tr()); return; } context.read().currentSelectedBranchName = widget.branchData.branchName.toString(); @@ -308,7 +310,7 @@ class _BranchDetailPageState extends State { bgColor: MyColors.white, onTap: () { if (widget.branchData.branchStatus == BranchStatusEnum.pending || widget.branchData.branchStatus == BranchStatusEnum.rejected) { - Utils.showToast("Please wait for the branch verification."); + Utils.showToast(LocaleKeys.waitForBranchVerification.tr()); return; } navigateWithName( @@ -367,7 +369,19 @@ class _BranchDetailPageState extends State { return buildServiceTileWidget(pIndex, serviceVM).onPress(() { serviceVM.categories[pIndex].branchId = widget.branchData.id.toString(); serviceVM.categories[pIndex].branchName = widget.branchData.branchName.toString(); - navigateWithName(context, AppRoutes.servicesList, arguments: serviceVM.categories[pIndex]); + // CategoryData categoryData = serviceVM.categories[pIndex]; + CategoryData categoryData = CategoryData( + id: serviceVM.categories[pIndex].id, + branchId: serviceVM.categories[pIndex].branchId, + branchName: serviceVM.categories[pIndex].branchName, + categoryName: serviceVM.categories[pIndex].categoryName, + categoryNameN: serviceVM.categories[pIndex].categoryNameN, + serviceCategoryIconUrl: serviceVM.categories[pIndex].serviceCategoryIconUrl, + serviceCategoryImageUrl: serviceVM.categories[pIndex].serviceCategoryImageUrl, + services: [], + ); + + navigateWithName(context, AppRoutes.servicesList, arguments: categoryData); }); }, itemCount: serviceVM.categories.length, diff --git a/lib/views/branch_management/services/create_item_page.dart b/lib/views/branch_management/services/create_item_page.dart index 6ebed41..71398ae 100644 --- a/lib/views/branch_management/services/create_item_page.dart +++ b/lib/views/branch_management/services/create_item_page.dart @@ -221,18 +221,17 @@ class _CreateItemPageState extends State { GenericRespModel mResponse = await itemsVM!.createServiceItem(map); Utils.hideLoading(context); if (mResponse.messageStatus == 1) { - itemsVM!.getServiceItems(itemData!.serviceProviderServiceId ?? 0); + // itemsVM!.getServiceItems(itemData!.serviceProviderServiceId ?? 0); pop(context); } Utils.showToast(mResponse.message ?? ""); } else { - log("attachedIMag: $attachedFile"); Map map = { "id": itemData!.id, "name": name, "price": price, "description": description, - "itemImage": attachedFile ?? "", + "itemImage": file == null ? "" : attachedFile, "companyID": 1, "manufactureDate": year, "serviceProviderServiceID": itemData!.serviceProviderServiceId, @@ -245,11 +244,10 @@ class _CreateItemPageState extends State { GenericRespModel mResponse = await itemsVM!.updateServiceItem(map); Utils.hideLoading(context); if (mResponse.messageStatus == 1) { - itemsVM!.getServiceItems(itemData!.serviceProviderServiceId ?? 0); + // itemsVM!.getServiceItems(itemData!.serviceProviderServiceId ?? 0); pop(context); } Utils.showToast(mResponse.message ?? ""); - pop(context); } } }, diff --git a/lib/views/branch_management/services/create_services_page3.dart b/lib/views/branch_management/services/create_services_page3.dart index 470f492..a3466d4 100644 --- a/lib/views/branch_management/services/create_services_page3.dart +++ b/lib/views/branch_management/services/create_services_page3.dart @@ -71,7 +71,6 @@ class _CreateServicesPage3State extends State { @override Widget build(BuildContext context) { - log("categoryId: ${categoryId}"); return Scaffold( appBar: CustomAppBar(title: LocaleKeys.editServices.tr()), body: SizedBox( @@ -291,6 +290,7 @@ class _CreateServicesPage3State extends State { Utils.showToast(mResponse.message ?? ""); if (mResponse.messageStatus == 1) { context.read().filterUserBranchCategories(); + context.read().isNeedRefreshServicesList = true; pop(context); } } diff --git a/lib/views/branch_management/services/items_list_page.dart b/lib/views/branch_management/services/items_list_page.dart index 8abfa70..cac989e 100644 --- a/lib/views/branch_management/services/items_list_page.dart +++ b/lib/views/branch_management/services/items_list_page.dart @@ -21,7 +21,7 @@ import 'package:easy_localization/easy_localization.dart'; class ItemsListPage extends StatelessWidget { ServiceModel? serviceProviderService; - ItemsListPage({Key? key}) : super(key: key); + ItemsListPage({super.key}); @override Widget build(BuildContext context) { @@ -58,9 +58,12 @@ class ItemsListPage extends StatelessWidget { children: [ model.serviceItems!.data![index].name.toString().toText(fontSize: 16, isBold: true), 4.height, - showItem("${LocaleKeys.availableforAppointment.tr()}:", (model.serviceItems!.data![index].isAllowAppointment ?? false) ? "Yes" : "No", valueColor: Colors.green), - showItem("${LocaleKeys.allowingWorkshopService.tr()}:", (model.serviceItems!.data![index].isAppointmentCompanyLoc ?? false) ? "Yes" : "No", valueColor: Colors.green), - showItem("${LocaleKeys.allowingHomeService.tr()}:", (model.serviceItems!.data![index].isAppointmentCustomerLoc ?? false) ? "Yes" : "No", valueColor: Colors.green), + showItem("${LocaleKeys.availableforAppointment.tr()}:", (model.serviceItems!.data![index].isAllowAppointment ?? false) ? "Yes" : "No", + valueColor: Colors.green), + showItem("${LocaleKeys.allowingWorkshopService.tr()}:", (model.serviceItems!.data![index].isAppointmentCompanyLoc ?? false) ? "Yes" : "No", + valueColor: Colors.green), + showItem("${LocaleKeys.allowingHomeService.tr()}:", (model.serviceItems!.data![index].isAppointmentCustomerLoc ?? false) ? "Yes" : "No", + valueColor: Colors.green), 12.height, LocaleKeys.serviceAmount.tr().toText(fontSize: 13, color: MyColors.lightTextColor), Row( diff --git a/lib/views/branch_management/services/services_list_page.dart b/lib/views/branch_management/services/services_list_page.dart index 8931441..da02e70 100644 --- a/lib/views/branch_management/services/services_list_page.dart +++ b/lib/views/branch_management/services/services_list_page.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:developer'; import 'package:car_provider_app/views/branch_management/services/duplication/sheet/approved_branches_list_sheet.dart'; import 'package:easy_localization/easy_localization.dart'; @@ -60,26 +61,53 @@ class _ServicesListPageState extends State { @override void initState() { scheduleMicrotask(() async { - await _fetchServices(); + await _fetchServices(ServiceStatusEnum.approvedOrActive); }); super.initState(); } - Future _fetchServices() async { + Future _fetchServices(ServiceStatusEnum status) async { categoryData.services = await context.read().fetchProviderServicesModelByCategoryIdAndBranchID( branchID: categoryData.branchId.toString(), categoryId: categoryData.id.toString(), ); - filteredServices = categoryData.services!.where((i) => i.serviceStatus == ServiceStatusEnum.approvedOrActive.index + 1).toList(); + filteredServices = categoryData.services!.where((i) => i.serviceStatus == status.index + 1).toList(); screenState = ViewState.idle; setState(() {}); } + Future _onRefresh(ServiceStatusEnum status, int tab) async { + screenState = ViewState.busy; + selectedService = status; + selectedTab = tab; + setState(() {}); + categoryData.services = await context.read().fetchProviderServicesModelByCategoryIdAndBranchID( + branchID: categoryData.branchId.toString(), + categoryId: categoryData.id.toString(), + ); + + if (selectedService == ServiceStatusEnum.approvedOrActive) { + filteredServices = categoryData.services!.where((i) => i.serviceStatus == ServiceStatusEnum.approvedOrActive.index + 1).toList(); + } else { + filteredServices = categoryData.services!.where((i) => i.serviceStatus != ServiceStatusEnum.approvedOrActive.index + 1).toList(); + } + screenState = ViewState.idle; + setState(() {}); + } + @override Widget build(BuildContext context) { categoryData = ModalRoute.of(context)!.settings.arguments as CategoryData; + if (context.read().isNeedRefreshServicesList) { + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) { + _onRefresh(ServiceStatusEnum.pending, 1); + context.read().isNeedRefreshServicesList = false; + } + }); + } return Scaffold( appBar: CustomAppBar( title: LocaleKeys.services.tr(), @@ -128,22 +156,7 @@ class _ServicesListPageState extends State { const SizedBox(height: 10), Expanded( child: RefreshIndicator( - onRefresh: () async { - screenState = ViewState.busy; - setState(() {}); - categoryData.services = await context.read().fetchProviderServicesModelByCategoryIdAndBranchID( - branchID: categoryData.branchId.toString(), - categoryId: categoryData.id.toString(), - ); - - if (selectedService == ServiceStatusEnum.approvedOrActive) { - filteredServices = categoryData.services!.where((i) => i.serviceStatus == ServiceStatusEnum.approvedOrActive.index + 1).toList(); - } else { - filteredServices = categoryData.services!.where((i) => i.serviceStatus != ServiceStatusEnum.approvedOrActive.index + 1).toList(); - } - screenState = ViewState.idle; - setState(() {}); - }, + onRefresh: () async => _onRefresh(selectedService, selectedTab), child: screenState == ViewState.busy ? const Center( child: CircularProgressIndicator(), @@ -165,9 +178,7 @@ class _ServicesListPageState extends State { ], Row( children: [ - Expanded( - child: (filteredServices[index].serviceDescription ?? "").toText(fontSize: 16), - ), + Expanded(child: (filteredServices[index].serviceDescription ?? "").toText(fontSize: 16)), if (filteredServices[index].serviceStatus != 1) ...[ Padding( padding: const EdgeInsets.all(4.0), @@ -176,7 +187,7 @@ class _ServicesListPageState extends State { width: 16, height: 16, ), - ).onPress(() { + ).onPress(() async { navigateWithName(context, AppRoutes.createServices3, arguments: CreateBranchModel( branchId: categoryData.branchId ?? '', diff --git a/pubspec.yaml b/pubspec.yaml index ac8b00e..9bf8d2d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,7 +9,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # followed by an optional build number separated by a +. # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. -# In Android, build-name is used as versionName while build-number used as versionCode. +# In Android, build-name is used as versionName while build-number used as versionCode.e # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at @@ -40,9 +40,9 @@ dependencies: # path: C:/Users/mirza.shafique/AndroidStudioProjects/mc_common_app mc_common_app: -# path: D:\Development\car_common_app -# path: /Users/amir/StudioProjects/car_common_app - path: /Volumes/Data/Projects/Flutter/car_common_app + # path: D:\Development\car_common_app + # path: /Users/amir/StudioProjects/car_common_app + path: /Volumes/Data/Projects/Flutter/car_common_app