Updated both apps' structure
parent
360048c3bf
commit
91ea03c834
@ -1,130 +1,153 @@
|
||||
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/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 {
|
||||
AdsFragment({Key? key}) : 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(
|
||||
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: LocaleKeys.exploreAds.tr(),
|
||||
txtColor: adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
|
||||
onPressed: () {
|
||||
print("ads: ${AppState().getUser.data!.accessToken}");
|
||||
adVM.populateAdsFilterList();
|
||||
if (adVM.myAds.isEmpty) {
|
||||
adVM.getMyAds();
|
||||
}
|
||||
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: () => _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: 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 {
|
||||
// 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,
|
||||
// Consumer(
|
||||
// builder: (BuildContext context, AdVM adVM, Widget? child) {
|
||||
// return 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.populateAdsFilterList();
|
||||
// if (adVM.myAds.isEmpty) {
|
||||
// adVM.getMyAds();
|
||||
// }
|
||||
// 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) ...[
|
||||
// if (adVM.adsFiltersCounter == 0) ...[
|
||||
// 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: Icon(
|
||||
// Icons.add,
|
||||
// color: MyColors.white,
|
||||
// ),
|
||||
// ),
|
||||
// );
|
||||
// },
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
|
@ -1,76 +1,80 @@
|
||||
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/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/theme/colors.dart';
|
||||
import 'package:mc_common_app/utils/enums.dart';
|
||||
import 'package:mc_common_app/utils/navigator.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: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(
|
||||
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.customer),
|
||||
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.customer,
|
||||
requestIndex: index,
|
||||
);
|
||||
},
|
||||
separatorBuilder: (context, index) => 16.height,
|
||||
itemCount: requestsVM.myFilteredRequests.length,
|
||||
padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16, top: 8),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
);
|
||||
}),
|
||||
),
|
||||
floatingActionButton: FloatingActionButton(
|
||||
onPressed: () => navigateWithName(context, AppRoutes.createRequestPage),
|
||||
backgroundColor: MyColors.darkPrimaryColor,
|
||||
child: const Icon(
|
||||
Icons.add,
|
||||
color: MyColors.white,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
// 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/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/theme/colors.dart';
|
||||
// import 'package:mc_common_app/utils/enums.dart';
|
||||
// import 'package:mc_common_app/utils/navigator.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: SizedBox(
|
||||
// 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.customer),
|
||||
// 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.customer,
|
||||
// requestIndex: index,
|
||||
// );
|
||||
// },
|
||||
// separatorBuilder: (context, index) => 16.height,
|
||||
// itemCount: requestsVM.myFilteredRequests.length,
|
||||
// padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16, top: 8),
|
||||
// ),
|
||||
// ),
|
||||
// )
|
||||
// ],
|
||||
// );
|
||||
// }),
|
||||
// ),
|
||||
// floatingActionButton: FloatingActionButton(
|
||||
// onPressed: () => navigateWithName(context, AppRoutes.createRequestPage),
|
||||
// backgroundColor: MyColors.darkPrimaryColor,
|
||||
// child: const Icon(
|
||||
// Icons.add,
|
||||
// color: MyColors.white,
|
||||
// ),
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
|
@ -1,37 +1,45 @@
|
||||
|
||||
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/models/provider_branches_models/branch_detail_model.dart';
|
||||
import 'package:mc_common_app/utils/navigator.dart';
|
||||
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
|
||||
|
||||
class ServiceProviderWidget extends StatelessWidget {
|
||||
const ServiceProviderWidget({Key? key}) : super(key: key);
|
||||
class MyRecentBranchesWidget extends StatelessWidget {
|
||||
final List<BranchDetailModel> nearbyBranches;
|
||||
|
||||
const MyRecentBranchesWidget({Key? key, required this.nearbyBranches}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SizedBox(
|
||||
width: double.infinity,
|
||||
height: 150,
|
||||
height: 140,
|
||||
child: ListView.builder(
|
||||
itemCount: 9,
|
||||
itemCount: nearbyBranches.length,
|
||||
scrollDirection: Axis.horizontal,
|
||||
shrinkWrap: true,
|
||||
itemBuilder: (BuildContext context, int index) {
|
||||
BranchDetailModel branchDetailModel = nearbyBranches[index];
|
||||
return SizedBox(
|
||||
width: 90,
|
||||
child: Column(
|
||||
children: [
|
||||
Image.asset(
|
||||
"assets/images/bn_car.jpeg",
|
||||
MyAssets.bnCar,
|
||||
width: 80,
|
||||
height: 80,
|
||||
fit: BoxFit.cover,
|
||||
).toCircle(borderRadius: 100),
|
||||
8.height,
|
||||
"Olaya Branch".toText(fontSize: 14, isBold: true, textAlign: TextAlign.center),
|
||||
"${branchDetailModel.branchName}".toText(fontSize: 14, isBold: true, textAlign: TextAlign.center),
|
||||
],
|
||||
),
|
||||
);
|
||||
).onPress(() {
|
||||
navigateWithName(context, AppRoutes.branchDetailPage, arguments: branchDetailModel);
|
||||
});
|
||||
},
|
||||
),
|
||||
);
|
Loading…
Reference in New Issue