small fixes from mbp

aamir_dev
faizatflutter 1 year ago
parent 7afe4683ed
commit 8f43c4a391

@ -80,7 +80,7 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
), ),
12.height, 12.height,
Consumer<ServiceVM>( Consumer<ServiceVM>(
builder: (context, model, _) { builder: (context, serviceVm, _) {
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
@ -95,27 +95,27 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
Column( Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
model.categoryDropList.isNotEmpty serviceVm.categoryDropList.isNotEmpty
? DropdownField( ? DropdownField(
(DropValue value) async { (DropValue value) async {
category = value; category = value;
service = null; service = null;
model.fetchProviderServices(widget.appointmentListModel.branchId.toString(), value.id.toString()); serviceVm.fetchProviderServices(widget.appointmentListModel.branchId.toString(), value.id.toString());
}, },
dropdownValue: category, dropdownValue: category,
list: model.categoryDropList, list: serviceVm.categoryDropList,
hint: LocaleKeys.selectServiceCategory.tr(), hint: LocaleKeys.selectServiceCategory.tr(),
) )
: const Center( : const Center(
child: CircularProgressIndicator(), child: CircularProgressIndicator(),
), ),
12.height, 12.height,
model.servicesDropList.isNotEmpty serviceVm.servicesDropList.isNotEmpty
? DropdownField( ? DropdownField(
(DropValue value) { (DropValue value) {
service = value; service = value;
pickedItems = null; pickedItems = null;
model.setState(ViewState.idle); serviceVm.setState(ViewState.idle);
showMyBottomSheet( showMyBottomSheet(
context, context,
child: SelectItemsSheet( child: SelectItemsSheet(
@ -129,18 +129,18 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
PickerItem(id: element.id ?? 0, title: element.name ?? ""), PickerItem(id: element.id ?? 0, title: element.name ?? ""),
); );
} }
model.notifyListeners(); serviceVm.notifyListeners();
}, },
), ),
); );
}, },
dropdownValue: service, dropdownValue: service,
list: model.servicesDropList, list: serviceVm.servicesDropList,
hint: LocaleKeys.defineServices.tr(), hint: LocaleKeys.defineServices.tr(),
) )
: category == null : category == null
? Container() ? Container()
: model.services != null && model.servicesDropList.isEmpty : serviceVm.services != null && serviceVm.servicesDropList.isEmpty
? Text(LocaleKeys.noServiceFound.tr()) ? Text(LocaleKeys.noServiceFound.tr())
: const CircularProgressIndicator(), : const CircularProgressIndicator(),
12.height, 12.height,
@ -161,7 +161,7 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
PickerItem(id: element.id ?? 0, title: element.name ?? ""), PickerItem(id: element.id ?? 0, title: element.name ?? ""),
); );
} }
model.notifyListeners(); serviceVm.notifyListeners();
}, },
), ),
); );

@ -1,23 +1,23 @@
import 'dart:async'; import 'dart:async';
import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/view_models/schedule_view_model.dart'; 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'; import 'package:car_provider_app/views/branch_management/branch/dealer/widget/assign_dealer_user_sheet.dart';
import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/service_view_model.dart';
import 'package:car_provider_app/views/branch_management/services/services_list_page.dart'; import 'package:car_provider_app/views/branch_management/services/services_list_page.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/classes/consts.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/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/provider_branches_models/branch_detail_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/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart'; 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/utils/utils.dart';
import 'package:mc_common_app/view_models/service_view_model.dart';
import 'package:mc_common_app/widgets/bottom_sheet.dart'; import 'package:mc_common_app/widgets/bottom_sheet.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';

@ -1,7 +1,7 @@
import 'dart:developer'; import 'dart:async';
import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/views/branch_management/services/duplication/sheet/approved_branches_list_sheet.dart'; import 'package:car_provider_app/views/branch_management/services/duplication/sheet/approved_branches_list_sheet.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.dart';
@ -15,12 +15,13 @@ import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart'; 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/utils/utils.dart'; import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/service_view_model.dart';
import 'package:mc_common_app/widgets/bottom_sheet.dart'; import 'package:mc_common_app/widgets/bottom_sheet.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/dropdown/dropdow_field.dart'; import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:mc_common_app/widgets/tab/role_type_tab.dart'; import 'package:mc_common_app/widgets/tab/role_type_tab.dart';
import 'package:provider/provider.dart';
class CreateBranchModel { class CreateBranchModel {
final String branchId; final String branchId;
@ -51,15 +52,33 @@ class _ServicesListPageState extends State<ServicesListPage> {
int selectedTab = 0; int selectedTab = 0;
ServiceStatusEnum selectedService = ServiceStatusEnum.approvedOrActive; ServiceStatusEnum selectedService = ServiceStatusEnum.approvedOrActive;
List<ServiceModel> filteredServices = [];
late CategoryData categoryData;
ViewState screenState = ViewState.busy;
@override
void initState() {
scheduleMicrotask(() async {
await _fetchServices();
});
super.initState();
}
Future<void> _fetchServices() async {
categoryData.services = await context.read<ServiceVM>().fetchProviderServicesModelByCategoryIdAndBranchID(
branchID: categoryData.branchId.toString(),
categoryId: categoryData.id.toString(),
);
filteredServices = categoryData.services!.where((i) => i.serviceStatus == ServiceStatusEnum.approvedOrActive.index + 1).toList();
screenState = ViewState.idle;
setState(() {});
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final categoryData = ModalRoute.of(context)!.settings.arguments as CategoryData; categoryData = ModalRoute.of(context)!.settings.arguments as CategoryData;
List<ServiceModel> services = [];
if (selectedService == ServiceStatusEnum.approvedOrActive) {
services = categoryData.services!.where((i) => i.serviceStatus == ServiceStatusEnum.approvedOrActive.index + 1).toList();
} else {
services = categoryData.services!.where((i) => i.serviceStatus != ServiceStatusEnum.approvedOrActive.index + 1).toList();
}
return Scaffold( return Scaffold(
appBar: CustomAppBar( appBar: CustomAppBar(
@ -97,8 +116,10 @@ class _ServicesListPageState extends State<ServicesListPage> {
selectedTab = value.id; selectedTab = value.id;
if (selectedTab == 0) { if (selectedTab == 0) {
selectedService = ServiceStatusEnum.approvedOrActive; selectedService = ServiceStatusEnum.approvedOrActive;
filteredServices = categoryData.services!.where((i) => i.serviceStatus == ServiceStatusEnum.approvedOrActive.index + 1).toList();
} else { } else {
selectedService = value.id.toServiceStatusEnum(); selectedService = value.id.toServiceStatusEnum();
filteredServices = categoryData.services!.where((i) => i.serviceStatus != ServiceStatusEnum.approvedOrActive.index + 1).toList();
} }
}); });
}, },
@ -106,82 +127,106 @@ class _ServicesListPageState extends State<ServicesListPage> {
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
Expanded( Expanded(
child: services.isEmpty child: RefreshIndicator(
? Center( onRefresh: () async {
child: LocaleKeys.noItemsToShow.tr().toText(fontSize: 16, color: MyColors.lightTextColor), screenState = ViewState.busy;
) setState(() {});
: ListView.separated( categoryData.services = await context.read<ServiceVM>().fetchProviderServicesModelByCategoryIdAndBranchID(
itemBuilder: (context, index) { branchID: categoryData.branchId.toString(),
return SizedBox( categoryId: categoryData.id.toString(),
width: double.infinity, );
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, if (selectedService == ServiceStatusEnum.approvedOrActive) {
children: [ filteredServices = categoryData.services!.where((i) => i.serviceStatus == ServiceStatusEnum.approvedOrActive.index + 1).toList();
if (services[index].serviceStatus == 1) ...[ } else {
Utils.statusContainerChip(text: "Pending", chipColor: MyColors.adPendingStatusColor), filteredServices = categoryData.services!.where((i) => i.serviceStatus != ServiceStatusEnum.approvedOrActive.index + 1).toList();
5.height, }
], screenState = ViewState.idle;
Row( setState(() {});
children: [ },
Expanded( child: screenState == ViewState.busy
child: (services[index].serviceDescription ?? "").toText(fontSize: 16), ? const Center(
), child: CircularProgressIndicator(),
if (services[index].serviceStatus != 1) ...[ )
Padding( : filteredServices.isEmpty
padding: const EdgeInsets.all(4.0), ? Center(
child: SvgPicture.asset( child: LocaleKeys.noServicesAvailable.tr().toText(fontSize: 16, color: MyColors.lightTextColor),
MyAssets.icEdit, )
width: 16, : ListView.separated(
height: 16, itemBuilder: (context, index) {
), return SizedBox(
).onPress(() { width: double.infinity,
navigateWithName(context, AppRoutes.createServices3, child: Column(
arguments: CreateBranchModel( crossAxisAlignment: CrossAxisAlignment.start,
branchId: categoryData.branchId ?? '', children: [
branchName: categoryData.branchName ?? '', if (filteredServices[index].serviceStatus == 1) ...[
categoryId: categoryData.id.toString(), Utils.statusContainerChip(text: "Pending", chipColor: MyColors.adPendingStatusColor),
categoryName: categoryData.categoryName, 5.height,
serviceProviderService: services[index], ],
isForEdit: true, Row(
));
}),
]
],
),
const SizedBox(height: 4),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
const SizedBox(height: 4), Expanded(
showItem('${LocaleKeys.availableforAppointment.tr()}:', (services[index].isAllowAppointment ?? false) ? LocaleKeys.yes.tr() : LocaleKeys.no.tr(), valueColor: Colors.green), child: (filteredServices[index].serviceDescription ?? "").toText(fontSize: 16),
showItem('${LocaleKeys.allowingHomeService.tr()}:', (services[index].isAllowAppointmentHome ?? false) ? LocaleKeys.yes.tr() : LocaleKeys.no.tr(), valueColor: Colors.green), ),
if ((services[index].isAllowAppointmentHome ?? false)) ...[ if (filteredServices[index].serviceStatus != 1) ...[
showItem('${LocaleKeys.homeServiceRange.tr()}:', services[index].customerLocationRange.toString()), Padding(
showItem('${LocaleKeys.chargesPerKM.tr()}:', services[index].rangePricePerKm.toString()), padding: const EdgeInsets.all(4.0),
], child: SvgPicture.asset(
MyAssets.icEdit,
width: 16,
height: 16,
),
).onPress(() {
navigateWithName(context, AppRoutes.createServices3,
arguments: CreateBranchModel(
branchId: categoryData.branchId ?? '',
branchName: categoryData.branchName ?? '',
categoryId: categoryData.id.toString(),
categoryName: categoryData.categoryName,
serviceProviderService: filteredServices[index],
isForEdit: true,
));
}),
]
], ],
), ),
), const SizedBox(height: 4),
const Icon(Icons.arrow_forward_rounded, size: 20), Row(
], crossAxisAlignment: CrossAxisAlignment.end,
), mainAxisAlignment: MainAxisAlignment.end,
], children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 4),
showItem('${LocaleKeys.availableforAppointment.tr()}:', (filteredServices[index].isAllowAppointment ?? false) ? LocaleKeys.yes.tr() : LocaleKeys.no.tr(),
valueColor: Colors.green),
showItem('${LocaleKeys.allowingHomeService.tr()}:', (filteredServices[index].isAllowAppointmentHome ?? false) ? LocaleKeys.yes.tr() : LocaleKeys.no.tr(),
valueColor: Colors.green),
if ((filteredServices[index].isAllowAppointmentHome ?? false)) ...[
showItem('${LocaleKeys.homeServiceRange.tr()}:', filteredServices[index].customerLocationRange.toString()),
showItem('${LocaleKeys.chargesPerKM.tr()}:', filteredServices[index].rangePricePerKm.toString()),
],
],
),
),
const Icon(Icons.arrow_forward_rounded, size: 20),
],
),
],
),
).toWhiteContainer(width: double.infinity, allPading: 12).onPress(
() => navigateWithName(context, AppRoutes.itemsList, arguments: filteredServices[index]),
);
},
separatorBuilder: (context, index) {
return const SizedBox(height: 12);
},
padding: const EdgeInsets.only(left: 20, right: 20, bottom: 20, top: 10),
itemCount: filteredServices.length,
), ),
).toWhiteContainer(width: double.infinity, allPading: 12).onPress( ),
() => navigateWithName(context, AppRoutes.itemsList, arguments: services[index]),
);
},
separatorBuilder: (context, index) {
return const SizedBox(height: 12);
},
padding: const EdgeInsets.only(left: 20, right: 20, bottom: 20, top: 10),
itemCount: services.length,
),
), ),
], ],
), ),

Loading…
Cancel
Save