You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
car_provider_app/lib/views/dashboard/fragments/ads_fragment.dart

131 lines
5.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_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/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 {
bool isNeedAppBar;
VoidCallback onBackButtonTapped;
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();
}
@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: 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 && adVM.exploreAds.isNotEmpty) ...[
// 16.height,
// FiltersList(filterList: adVM.exploreAdsFilterOptions, onFilterTapped: (index, selectedFilterId) => adVM.applyFilterOnExploreAds(index: index), needLeftPadding: false)
// .paddingOnly(left: 21),
// ],
// if (!adVM.isExploreAdsTapped && adVM.myAds.isNotEmpty) ...[
// 16.height,
// FiltersList(
// filterList: adVM.myAdsFilterOptions,
// onFilterTapped: (index, selectedFilterId) => adVM.applyFilterOnMyAds(index: index, selectedFilterId: selectedFilterId),
// 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: adVM.isExploreAdsTapped && adVM.exploreAdsFilteredList.isNotEmpty
? adVM.exploreAdsFilteredList
: !adVM.isExploreAdsTapped && adVM.myAdsFilteredList.isNotEmpty
? adVM.myAdsFilteredList
: [],
);
},
),
),
)
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
context.read<AdVM>().getVehicleTypes();
navigateWithName(context, AppRoutes.createAdView);
},
backgroundColor: MyColors.darkPrimaryColor,
child: const Icon(
Icons.add,
color: MyColors.white,
),
),
);
}
}