Updated both apps' structure
parent
272dfe06f4
commit
7eeb3ed208
@ -1,135 +1,136 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mc_common_app/classes/app_state.dart';
|
||||
import 'package:mc_common_app/config/dependency_injection.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/advertisment_models/ad_details_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/view_models/ad_view_model.dart';
|
||||
import 'package:mc_common_app/views/advertisement/ads_list.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/categories_list.dart';
|
||||
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
|
||||
|
||||
class AdsFragment extends StatelessWidget {
|
||||
final bool isNeedAppBar;
|
||||
final VoidCallback onBackButtonTapped;
|
||||
|
||||
const AdsFragment({Key? key, this.isNeedAppBar = true, required this.onBackButtonTapped}) : super(key: key);
|
||||
|
||||
Future<void> onRefreshAds(BuildContext context) async {
|
||||
AdVM adVM = context.read<AdVM>();
|
||||
await adVM.getExploreAds();
|
||||
await adVM.getMyAds();
|
||||
}
|
||||
|
||||
List<AdDetailsModel> getAdsList(AdVM adVM) {
|
||||
if (adVM.isExploreAdsTapped) {
|
||||
return adVM.exploreAdsFilteredList;
|
||||
}
|
||||
if (adVM.myAdsFilteredList.isNotEmpty) {
|
||||
return adVM.myAdsFilteredList;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: !isNeedAppBar
|
||||
? null
|
||||
: CustomAppBar(
|
||||
title: LocaleKeys.ads.tr(),
|
||||
onBackButtonTapped: onBackButtonTapped,
|
||||
),
|
||||
body: Container(
|
||||
color: MyColors.backgroundColor,
|
||||
width: double.infinity,
|
||||
height: double.infinity,
|
||||
child: Column(
|
||||
children: [
|
||||
16.height,
|
||||
Consumer(
|
||||
builder: (BuildContext context, AdVM adVM, Widget? child) {
|
||||
return Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: ShowFillButton(
|
||||
isFilled: adVM.isExploreAdsTapped,
|
||||
maxHeight: 55,
|
||||
title: "Explore Ads",
|
||||
txtColor: adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
|
||||
onPressed: () {
|
||||
print("ads: ${AppState().getUser.data!.accessToken}");
|
||||
adVM.updateIsExploreAds(true);
|
||||
},
|
||||
),
|
||||
),
|
||||
12.width,
|
||||
Expanded(
|
||||
child: ShowFillButton(
|
||||
isFilled: !adVM.isExploreAdsTapped,
|
||||
txtColor: !adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
|
||||
maxHeight: 55,
|
||||
title: "My Ads",
|
||||
onPressed: () {
|
||||
adVM.updateIsExploreAds(false);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
).horPaddingMain(),
|
||||
if (adVM.isExploreAdsTapped) ...[
|
||||
16.height,
|
||||
FiltersList(
|
||||
filterList: adVM.exploreAdsFilterOptions,
|
||||
onFilterTapped: (index, selectedFilterId) => adVM.applyFilterOnExploreAds(createdByRoleFilter: selectedFilterId.toCreatedByRoleEnum()),
|
||||
needLeftPadding: false)
|
||||
.paddingOnly(left: 21),
|
||||
],
|
||||
if (!adVM.isExploreAdsTapped) ...[
|
||||
16.height,
|
||||
FiltersList(
|
||||
filterList: adVM.myAdsFilterOptions,
|
||||
onFilterTapped: (index, selectedFilterId) => adVM.applyFilterOnMyAds(adPostStatusEnum: selectedFilterId.toAdPostEnum()),
|
||||
needLeftPadding: false,
|
||||
).paddingOnly(left: 21),
|
||||
],
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
16.height,
|
||||
Expanded(
|
||||
child: RefreshIndicator(
|
||||
onRefresh: () => onRefreshAds(context),
|
||||
child: Consumer(
|
||||
builder: (BuildContext context, AdVM adVM, Widget? child) {
|
||||
return BuildAdsList(isAdsFragment: true, shouldShowAdStatus: !adVM.isExploreAdsTapped, adsList: getAdsList(adVM));
|
||||
},
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
floatingActionButton: FloatingActionButton(
|
||||
onPressed: () async {
|
||||
navigateWithName(context, AppRoutes.selectAdTypeView, arguments: injector.get<AppState>().currentAppType == AppType.provider);
|
||||
},
|
||||
backgroundColor: MyColors.darkPrimaryColor,
|
||||
child: const Icon(Icons.add, color: MyColors.white),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:mc_common_app/classes/app_state.dart';
|
||||
// import 'package:mc_common_app/classes/consts.dart';
|
||||
// import 'package:mc_common_app/config/dependency_injection.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/advertisment_models/ad_details_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/view_models/ad_view_model.dart';
|
||||
// import 'package:mc_common_app/views/advertisement/ads_list.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/categories_list.dart';
|
||||
// import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
|
||||
// import 'package:provider/provider.dart';
|
||||
// import 'package:easy_localization/easy_localization.dart';
|
||||
//
|
||||
// class AdsFragment extends StatelessWidget {
|
||||
// const AdsFragment({Key? key}) : super(key: key);
|
||||
//
|
||||
// List<AdDetailsModel> getAdsList(AdVM adVM) {
|
||||
// if (adVM.isExploreAdsTapped) {
|
||||
// return adVM.exploreAdsFilteredList;
|
||||
// }
|
||||
// if (adVM.myAdsFilteredList.isNotEmpty) {
|
||||
// return adVM.myAdsFilteredList;
|
||||
// }
|
||||
// return [];
|
||||
// }
|
||||
//
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// return Consumer(
|
||||
// builder: (BuildContext context, AdVM adVM, Widget? child) {
|
||||
// return Scaffold(
|
||||
// appBar: CustomAppBar(
|
||||
// title: LocaleKeys.ads.tr(),
|
||||
// isRemoveBackButton: true,
|
||||
// actions: [
|
||||
// Padding(
|
||||
// padding: EdgeInsets.only(top: adVM.adsFiltersCounter > 0 ? 20 : 0, right: 21),
|
||||
// child: Badge(
|
||||
// isLabelVisible: adVM.adsFiltersCounter > 0,
|
||||
// largeSize: 15,
|
||||
// smallSize: 20,
|
||||
// backgroundColor: MyColors.darkPrimaryColor,
|
||||
// label: Text('${adVM.adsFiltersCounter}'),
|
||||
// child: MyAssets.searchIcon.buildSvg(),
|
||||
// ),
|
||||
// ).onPress(() {
|
||||
// navigateWithName(context, AppRoutes.adsFilterView);
|
||||
// })
|
||||
// ],
|
||||
// ),
|
||||
// body: SizedBox(
|
||||
// width: double.infinity,
|
||||
// height: double.infinity,
|
||||
// child: Column(
|
||||
// children: [
|
||||
// 16.height,
|
||||
// Column(
|
||||
// children: [
|
||||
// Row(
|
||||
// children: [
|
||||
// Expanded(
|
||||
// child: ShowFillButton(
|
||||
// isFilled: adVM.isExploreAdsTapped,
|
||||
// maxHeight: 55,
|
||||
// title: LocaleKeys.exploreAds.tr(),
|
||||
// txtColor: adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
|
||||
// onPressed: () {
|
||||
// print("accessToken: ${AppState().getUser.data!.accessToken}");
|
||||
// adVM.updateIsExploreAds(true);
|
||||
// },
|
||||
// ),
|
||||
// ),
|
||||
// 12.width,
|
||||
// Expanded(
|
||||
// child: ShowFillButton(
|
||||
// isFilled: !adVM.isExploreAdsTapped,
|
||||
// txtColor: !adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
|
||||
// maxHeight: 55,
|
||||
// title: LocaleKeys.myAds.tr(),
|
||||
// onPressed: () {
|
||||
// adVM.updateIsExploreAds(false);
|
||||
// },
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ).horPaddingMain(),
|
||||
// if (adVM.isExploreAdsTapped) ...[
|
||||
// 16.height,
|
||||
// FiltersList(
|
||||
// filterList: adVM.exploreAdsFilterOptions,
|
||||
// onFilterTapped: (index, selectedFilterId) => adVM.applyFilterOnExploreAds(createdByRoleFilter: selectedFilterId.toCreatedByRoleEnum()),
|
||||
// needLeftPadding: false)
|
||||
// .paddingOnly(left: 21),
|
||||
// ] else ...[
|
||||
// 16.height,
|
||||
// FiltersList(
|
||||
// filterList: adVM.myAdsFilterOptions,
|
||||
// onFilterTapped: (index, selectedFilterId) => adVM.applyFilterOnMyAds(adPostStatusEnum: selectedFilterId.toAdPostEnum()),
|
||||
// needLeftPadding: false,
|
||||
// ).paddingOnly(left: 21),
|
||||
// ],
|
||||
// ],
|
||||
// ),
|
||||
// 16.height,
|
||||
// Expanded(
|
||||
// child: RefreshIndicator(
|
||||
// onRefresh: () async {
|
||||
// await adVM.getExploreAds();
|
||||
// await adVM.getMyAds();
|
||||
// },
|
||||
// child: BuildAdsList(isAdsFragment: true, shouldShowAdStatus: !adVM.isExploreAdsTapped, adsList: getAdsList(adVM)),
|
||||
// ),
|
||||
// )
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// floatingActionButton: FloatingActionButton(
|
||||
// onPressed: () async {
|
||||
// navigateWithName(context, AppRoutes.selectAdTypeView, arguments: injector.get<AppState>().currentAppType == AppType.provider);
|
||||
// },
|
||||
// backgroundColor: MyColors.darkPrimaryColor,
|
||||
// child: const Icon(Icons.add, color: MyColors.white),
|
||||
// ),
|
||||
// );
|
||||
// },
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
|
||||
@ -1,223 +1,222 @@
|
||||
import 'package:car_provider_app/config/provider_routes.dart';
|
||||
import 'package:car_provider_app/views/dashboard/widget/appointment_slider_widget.dart';
|
||||
import 'package:mc_common_app/classes/app_state.dart';
|
||||
import 'package:mc_common_app/config/dependency_injection.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/theme/colors.dart';
|
||||
import 'package:mc_common_app/utils/date_helper.dart';
|
||||
import 'package:mc_common_app/utils/navigator.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/widgets/common_widgets/categories_list.dart';
|
||||
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mc_common_app/extensions/int_extensions.dart';
|
||||
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
|
||||
import 'package:percent_indicator/percent_indicator.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
|
||||
|
||||
class AppointmentFragment extends StatelessWidget {
|
||||
String date = "";
|
||||
final VoidCallback onBackButtonTapped;
|
||||
|
||||
AppointmentFragment({Key? key, required this.onBackButtonTapped}) : super(key: key);
|
||||
|
||||
GlobalKey<RefreshIndicatorState> refreshIndicatorKey = GlobalKey<RefreshIndicatorState>();
|
||||
|
||||
Future<void> _pullRefresh(BuildContext context) async {
|
||||
await context.read<AppointmentsVM>().getMyAppointmentsForProvider({"ServiceProviderID": injector.get<AppState>().getUser.data?.userInfo?.providerId.toString() ?? "0"});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
date = DateHelper.formatAsDayMonthYear(DateTime.now());
|
||||
return Scaffold(
|
||||
appBar: CustomAppBar(
|
||||
//profileImageUrl: MyAssets.carBanner,
|
||||
title: LocaleKeys.appointments.tr(),
|
||||
onBackButtonTapped: onBackButtonTapped,
|
||||
actions: [
|
||||
IconButton(
|
||||
onPressed: () {},
|
||||
icon: const Icon(Icons.search),
|
||||
),
|
||||
10.width,
|
||||
],
|
||||
),
|
||||
body: SizedBox(
|
||||
width: double.infinity,
|
||||
height: double.infinity,
|
||||
child: Consumer(builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) {
|
||||
return RefreshIndicator(
|
||||
onRefresh: () => _pullRefresh(context),
|
||||
key: refreshIndicatorKey,
|
||||
child: SingleChildScrollView(
|
||||
physics: const AlwaysScrollableScrollPhysics(),
|
||||
child: Column(
|
||||
children: [
|
||||
progressWidget(context),
|
||||
FiltersList(
|
||||
filterList: appointmentsVM.appointmentsFilterOptions,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 18),
|
||||
onFilterTapped: (index, selectedFilterId) {
|
||||
appointmentsVM.applyFilterOnAppointmentsVM(
|
||||
appointmentStatusEnum: selectedFilterId.toAppointmentStatusEnum(),
|
||||
);
|
||||
},
|
||||
),
|
||||
ListView.separated(
|
||||
itemBuilder: (context, index) {
|
||||
return AppointmentSliderWidget(
|
||||
appointmentListModel: appointmentsVM.myFilteredAppointments2[index],
|
||||
isNeedTotalPayment: false,
|
||||
onTap: () {
|
||||
navigateWithName(
|
||||
context,
|
||||
ProviderAppRoutes.appointmentDetailList,
|
||||
arguments: appointmentsVM.myFilteredAppointments2[index].customerAppointmentList,
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
separatorBuilder: (context, snapchat) {
|
||||
return 21.height;
|
||||
},
|
||||
itemCount: appointmentsVM.myFilteredAppointments2.length,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
shrinkWrap: true,
|
||||
padding: const EdgeInsets.all(21),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget progressWidget(BuildContext context) {
|
||||
return Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: "Slots Overview".toText(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
date.toText(
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
const Icon(
|
||||
Icons.keyboard_arrow_down_outlined,
|
||||
size: 16,
|
||||
),
|
||||
],
|
||||
)
|
||||
.toContainer(
|
||||
backgroundColor: MyColors.lightGreyEAColor,
|
||||
borderRadius: 100,
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 12,
|
||||
vertical: 6,
|
||||
),
|
||||
)
|
||||
.onPress(() async {
|
||||
date = await Utils.pickDateFromDatePicker(
|
||||
context,
|
||||
firstDate: null,
|
||||
);
|
||||
context.read<AppointmentsVM>().notifyListeners();
|
||||
}),
|
||||
],
|
||||
),
|
||||
24.height,
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 14,
|
||||
height: 14,
|
||||
color: MyColors.lightGreyEAColor,
|
||||
),
|
||||
4.width,
|
||||
"Empty: ".toText(
|
||||
fontSize: 8,
|
||||
color: Colors.white,
|
||||
),
|
||||
"8".toText(
|
||||
fontSize: 9,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
),
|
||||
],
|
||||
).toContainer(
|
||||
backgroundColor: MyColors.darkIconColor,
|
||||
),
|
||||
8.height,
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 14,
|
||||
height: 14,
|
||||
color: MyColors.darkPrimaryColor,
|
||||
),
|
||||
4.width,
|
||||
"Occupied: ".toText(
|
||||
fontSize: 8,
|
||||
color: Colors.white,
|
||||
),
|
||||
"54".toText(
|
||||
fontSize: 9,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
),
|
||||
],
|
||||
).toContainer(
|
||||
backgroundColor: MyColors.darkIconColor,
|
||||
),
|
||||
],
|
||||
),
|
||||
CircularPercentIndicator(
|
||||
radius: 60.0,
|
||||
lineWidth: 12.0,
|
||||
percent: 0.7,
|
||||
circularStrokeCap: CircularStrokeCap.round,
|
||||
center: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
"Total Slots".toText(
|
||||
fontSize: 13,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
"24".toText(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
],
|
||||
),
|
||||
backgroundColor: MyColors.lightGreyEAColor,
|
||||
progressColor: MyColors.darkPrimaryColor,
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
).toWhiteContainer(
|
||||
width: double.infinity,
|
||||
pading: const EdgeInsets.all(12),
|
||||
margin: const EdgeInsets.all(21),
|
||||
);
|
||||
}
|
||||
}
|
||||
// import 'package:car_provider_app/config/provider_routes.dart';
|
||||
// import 'package:car_provider_app/views/dashboard/widget/appointment_slider_widget.dart';
|
||||
// import 'package:mc_common_app/classes/app_state.dart';
|
||||
// import 'package:mc_common_app/config/dependency_injection.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/theme/colors.dart';
|
||||
// import 'package:mc_common_app/utils/date_helper.dart';
|
||||
// import 'package:mc_common_app/utils/navigator.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/widgets/common_widgets/categories_list.dart';
|
||||
// import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:mc_common_app/extensions/int_extensions.dart';
|
||||
// import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
|
||||
// import 'package:percent_indicator/percent_indicator.dart';
|
||||
// import 'package:provider/provider.dart';
|
||||
// import 'package:easy_localization/easy_localization.dart';
|
||||
//
|
||||
// class AppointmentFragment extends StatelessWidget {
|
||||
// String date = "";
|
||||
// final VoidCallback onBackButtonTapped;
|
||||
//
|
||||
// AppointmentFragment({Key? key, required this.onBackButtonTapped}) : super(key: key);
|
||||
//
|
||||
// GlobalKey<RefreshIndicatorState> refreshIndicatorKey = GlobalKey<RefreshIndicatorState>();
|
||||
//
|
||||
// Future<void> _pullRefresh(BuildContext context) async {
|
||||
// await context.read<AppointmentsVM>().getMyAppointmentsForProvider({"ServiceProviderID": injector.get<AppState>().getUser.data?.userInfo?.providerId.toString() ?? "0"});
|
||||
// }
|
||||
//
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// date = DateHelper.formatAsDayMonthYear(DateTime.now());
|
||||
// return Scaffold(
|
||||
// appBar: CustomAppBar(
|
||||
// //profileImageUrl: MyAssets.carBanner,
|
||||
// title: LocaleKeys.appointments.tr(),
|
||||
// onBackButtonTapped: onBackButtonTapped,
|
||||
// actions: [
|
||||
// IconButton(
|
||||
// onPressed: () {},
|
||||
// icon: const Icon(Icons.search),
|
||||
// ),
|
||||
// 10.width,
|
||||
// ],
|
||||
// ),
|
||||
// body: SizedBox(
|
||||
// width: double.infinity,
|
||||
// height: double.infinity,
|
||||
// child: Consumer(builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) {
|
||||
// return RefreshIndicator(
|
||||
// onRefresh: () => _pullRefresh(context),
|
||||
// key: refreshIndicatorKey,
|
||||
// child: SingleChildScrollView(
|
||||
// physics: const AlwaysScrollableScrollPhysics(),
|
||||
// child: Column(
|
||||
// children: [
|
||||
// progressWidget(context),
|
||||
// FiltersList(
|
||||
// filterList: appointmentsVM.appointmentsFilterOptions,
|
||||
// padding: const EdgeInsets.symmetric(horizontal: 18),
|
||||
// onFilterTapped: (index, selectedFilterId) {
|
||||
// appointmentsVM.applyFilterOnAppointmentsVM(
|
||||
// appointmentStatusEnum: selectedFilterId.toAppointmentStatusEnum(),
|
||||
// );
|
||||
// },
|
||||
// ),
|
||||
// ListView.separated(
|
||||
// itemBuilder: (context, index) {
|
||||
// return AppointmentSliderWidget(
|
||||
// appointmentListModel: appointmentsVM.myFilteredAppointments2[index],
|
||||
// isNeedTotalPayment: false,
|
||||
// onTap: () {
|
||||
// navigateWithName(
|
||||
// context,
|
||||
// ProviderAppRoutes.appointmentDetailList,
|
||||
// arguments: appointmentsVM.myFilteredAppointments2[index].customerAppointmentList,
|
||||
// );
|
||||
// },
|
||||
// );
|
||||
// },
|
||||
// separatorBuilder: (context, snapchat) {
|
||||
// return 21.height;
|
||||
// },
|
||||
// itemCount: appointmentsVM.myFilteredAppointments2.length,
|
||||
// physics: const NeverScrollableScrollPhysics(),
|
||||
// shrinkWrap: true,
|
||||
// padding: const EdgeInsets.all(21),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// );
|
||||
// }),
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// Widget progressWidget(BuildContext context) {
|
||||
// return Column(
|
||||
// children: [
|
||||
// Row(
|
||||
// children: [
|
||||
// Expanded(
|
||||
// child: "Slots Overview".toText(
|
||||
// fontSize: 16,
|
||||
// fontWeight: FontWeight.bold,
|
||||
// ),
|
||||
// ),
|
||||
// Row(
|
||||
// children: [
|
||||
// date.toText(
|
||||
// fontWeight: FontWeight.bold,
|
||||
// ),
|
||||
// const Icon(
|
||||
// Icons.keyboard_arrow_down_outlined,
|
||||
// size: 16,
|
||||
// ),
|
||||
// ],
|
||||
// )
|
||||
// .toContainer(
|
||||
// backgroundColor: MyColors.lightGreyEAColor,
|
||||
// borderRadius: 100,
|
||||
// padding: const EdgeInsets.symmetric(
|
||||
// horizontal: 12,
|
||||
// vertical: 6,
|
||||
// ),
|
||||
// )
|
||||
// .onPress(() async {
|
||||
// date = await Utils.pickDateFromDatePicker(
|
||||
// context,
|
||||
// firstDate: null,
|
||||
// );
|
||||
// context.read<AppointmentsVM>().notifyListeners();
|
||||
// }),
|
||||
// ],
|
||||
// ),
|
||||
// 24.height,
|
||||
// Row(
|
||||
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
// children: [
|
||||
// Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Row(
|
||||
// children: [
|
||||
// Container(
|
||||
// width: 14,
|
||||
// height: 14,
|
||||
// color: MyColors.lightGreyEAColor,
|
||||
// ),
|
||||
// 4.width,
|
||||
// "Empty: ".toText(
|
||||
// fontSize: 8,
|
||||
// color: Colors.white,
|
||||
// ),
|
||||
// "8".toText(
|
||||
// fontSize: 9,
|
||||
// fontWeight: FontWeight.bold,
|
||||
// color: Colors.white,
|
||||
// ),
|
||||
// ],
|
||||
// ).toContainer(
|
||||
// backgroundColor: MyColors.darkIconColor,
|
||||
// ),
|
||||
// 8.height,
|
||||
// Row(
|
||||
// children: [
|
||||
// Container(
|
||||
// width: 14,
|
||||
// height: 14,
|
||||
// color: MyColors.darkPrimaryColor,
|
||||
// ),
|
||||
// 4.width,
|
||||
// "Occupied: ".toText(
|
||||
// fontSize: 8,
|
||||
// color: Colors.white,
|
||||
// ),
|
||||
// "54".toText(
|
||||
// fontSize: 9,
|
||||
// fontWeight: FontWeight.bold,
|
||||
// color: Colors.white,
|
||||
// ),
|
||||
// ],
|
||||
// ).toContainer(
|
||||
// backgroundColor: MyColors.darkIconColor,
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// CircularPercentIndicator(
|
||||
// radius: 60.0,
|
||||
// lineWidth: 12.0,
|
||||
// percent: 0.7,
|
||||
// circularStrokeCap: CircularStrokeCap.round,
|
||||
// center: Column(
|
||||
// mainAxisAlignment: MainAxisAlignment.center,
|
||||
// children: [
|
||||
// "Total Slots".toText(
|
||||
// fontSize: 13,
|
||||
// fontWeight: FontWeight.bold,
|
||||
// ),
|
||||
// "24".toText(
|
||||
// fontSize: 24,
|
||||
// fontWeight: FontWeight.bold,
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// backgroundColor: MyColors.lightGreyEAColor,
|
||||
// progressColor: MyColors.darkPrimaryColor,
|
||||
// ),
|
||||
// ],
|
||||
// )
|
||||
// ],
|
||||
// ).toWhiteContainer(
|
||||
// width: double.infinity,
|
||||
// pading: const EdgeInsets.all(12),
|
||||
// margin: const EdgeInsets.all(21),
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
|
||||
@ -1,74 +1,68 @@
|
||||
import 'package:mc_common_app/generated/locale_keys.g.dart';
|
||||
import 'package:mc_common_app/view_models/requests_view_model.dart';
|
||||
import 'package:flutter/material.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/views/requests/widget/request_item.dart';
|
||||
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
|
||||
import 'package:mc_common_app/widgets/common_widgets/categories_list.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
|
||||
|
||||
class MyRequestsFragment extends StatelessWidget {
|
||||
final bool isNeedAppBar;
|
||||
VoidCallback onBackButtonTapped;
|
||||
|
||||
MyRequestsFragment({super.key, this.isNeedAppBar = true, required this.onBackButtonTapped});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: !isNeedAppBar
|
||||
? null
|
||||
: CustomAppBar(
|
||||
title: LocaleKeys.myServiceBranches.tr(),
|
||||
onBackButtonTapped: onBackButtonTapped,
|
||||
),
|
||||
body: Container(
|
||||
color: MyColors.backgroundColor,
|
||||
width: double.infinity,
|
||||
height: double.infinity,
|
||||
child: Consumer(builder: (BuildContext context, RequestsVM requestsVM, Widget? child) {
|
||||
return Column(
|
||||
children: [
|
||||
16.height,
|
||||
FiltersList(
|
||||
filterList: requestsVM.requestsTypeFilterOptions,
|
||||
onFilterTapped: (index, selectedFilterId) {
|
||||
requestsVM.applyFilterOnRequestsVM(requestsTypeEnum: selectedFilterId.toRequestTypeStatusEnum());
|
||||
},
|
||||
),
|
||||
8.height,
|
||||
Expanded(
|
||||
child: RefreshIndicator(
|
||||
onRefresh: () async => await requestsVM.getRequests(isNeedToRebuild: true, appType: AppType.provider),
|
||||
child: requestsVM.state == ViewState.busy
|
||||
? const Center(child: CircularProgressIndicator())
|
||||
: requestsVM.myFilteredRequests.isEmpty
|
||||
? Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
LocaleKeys.noRequeststoShow.tr().toText(fontSize: 16, color: MyColors.lightTextColor),
|
||||
],
|
||||
)
|
||||
: ListView.separated(
|
||||
itemBuilder: (context, index) {
|
||||
return RequestItem(request: requestsVM.myFilteredRequests[index], appType: AppType.provider, requestIndex: index);
|
||||
},
|
||||
separatorBuilder: (context, index) {
|
||||
return 16.height;
|
||||
},
|
||||
itemCount: requestsVM.myFilteredRequests.length,
|
||||
padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16, top: 8),
|
||||
),
|
||||
))
|
||||
],
|
||||
);
|
||||
}),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
// import 'package:mc_common_app/generated/locale_keys.g.dart';
|
||||
// import 'package:mc_common_app/view_models/requests_view_model.dart';
|
||||
// import 'package:flutter/material.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/views/requests/widget/request_item.dart';
|
||||
// import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
|
||||
// import 'package:mc_common_app/widgets/common_widgets/categories_list.dart';
|
||||
// import 'package:provider/provider.dart';
|
||||
// import 'package:easy_localization/easy_localization.dart';
|
||||
//
|
||||
// class MyRequestsFragment extends StatelessWidget {
|
||||
// const MyRequestsFragment({super.key});
|
||||
//
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// return Scaffold(
|
||||
// appBar: CustomAppBar(
|
||||
// title: LocaleKeys.myRequests.tr(),
|
||||
// isRemoveBackButton: true,
|
||||
// ),
|
||||
// body: Container(
|
||||
// color: MyColors.backgroundColor,
|
||||
// width: double.infinity,
|
||||
// height: double.infinity,
|
||||
// child: Consumer(builder: (BuildContext context, RequestsVM requestsVM, Widget? child) {
|
||||
// return Column(
|
||||
// children: [
|
||||
// 16.height,
|
||||
// FiltersList(
|
||||
// filterList: requestsVM.requestsTypeFilterOptions,
|
||||
// onFilterTapped: (index, selectedFilterId) {
|
||||
// requestsVM.applyFilterOnRequestsVM(requestsTypeEnum: selectedFilterId.toRequestTypeStatusEnum());
|
||||
// },
|
||||
// ),
|
||||
// 8.height,
|
||||
// Expanded(
|
||||
// child: RefreshIndicator(
|
||||
// onRefresh: () async => await requestsVM.getRequests(isNeedToRebuild: true, appType: AppType.provider),
|
||||
// child: requestsVM.state == ViewState.busy
|
||||
// ? const Center(child: CircularProgressIndicator())
|
||||
// : requestsVM.myFilteredRequests.isEmpty
|
||||
// ? Column(
|
||||
// mainAxisAlignment: MainAxisAlignment.center,
|
||||
// children: [
|
||||
// LocaleKeys.noRequeststoShow.tr().toText(fontSize: 16, color: MyColors.lightTextColor),
|
||||
// ],
|
||||
// )
|
||||
// : ListView.separated(
|
||||
// itemBuilder: (context, index) {
|
||||
// return RequestItem(request: requestsVM.myFilteredRequests[index], appType: AppType.provider, requestIndex: index);
|
||||
// },
|
||||
// separatorBuilder: (context, index) {
|
||||
// return 16.height;
|
||||
// },
|
||||
// itemCount: requestsVM.myFilteredRequests.length,
|
||||
// padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16, top: 8),
|
||||
// ),
|
||||
// ))
|
||||
// ],
|
||||
// );
|
||||
// }),
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
|
||||
Loading…
Reference in New Issue