diff --git a/lib/view_models/ad_view_model.dart b/lib/view_models/ad_view_model.dart index 55f2594..c54fa50 100644 --- a/lib/view_models/ad_view_model.dart +++ b/lib/view_models/ad_view_model.dart @@ -1,6 +1,8 @@ import 'dart:convert'; import 'dart:developer'; import 'dart:io'; + +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.dart'; @@ -32,7 +34,6 @@ import 'package:mc_common_app/utils/utils.dart'; import 'package:mc_common_app/view_models/base_view_model.dart'; import 'package:mc_common_app/view_models/chat_view_model.dart'; import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; -import 'package:easy_localization/easy_localization.dart'; import 'package:provider/provider.dart'; class AdVM extends BaseVM { @@ -114,10 +115,7 @@ class AdVM extends BaseVM { } void removeSpecialServiceCard(int index) { - String option = specialServiceCards - .elementAt(index) - .serviceSelectedId! - .selectedOption; + String option = specialServiceCards.elementAt(index).serviceSelectedId!.selectedOption; for (var value in vehicleAdsSpecialServices) { if (value.name == option) { @@ -221,6 +219,14 @@ class AdVM extends BaseVM { notifyListeners(); } + int currentPage = 1; + bool isLoadingMore = false; + bool hasMoreData = true; + + fetchMoreAds() async { + + } + Future> getAdsByFilter({AdPostStatus? adPostStatus, required bool isMyAds, CreatedByRoleEnum? createdByRoleEnum}) async { return await adsRepo.getAllAds(isMyAds: isMyAds, adPostStatus: adPostStatus, createdByRoleEnum: createdByRoleEnum); } @@ -1258,10 +1264,7 @@ class AdVM extends BaseVM { } void removeDamagePartCard(int index) { - String option = vehicleDamageCards - .elementAt(index) - .partSelectedId! - .selectedOption; + String option = vehicleDamageCards.elementAt(index).partSelectedId!.selectedOption; for (var value in vehicleDamageParts) { if (value.partName == option) { @@ -1539,9 +1542,7 @@ class AdVM extends BaseVM { File file = File(imageModel.filePath!); List imageBytes = await file.readAsBytes(); String image = base64Encode(imageBytes); - String fileName = file.path - .split('/') - .last; + String fileName = file.path.split('/').last; vehiclePostingImages = VehiclePostingImages( imageName: fileName, imageStr: image, @@ -2041,13 +2042,13 @@ class AdVM extends BaseVM { final chatVM = context.read(); await chatVM .getUsersChatMessagesForAd( - context: context, - isForBuyer: true, - adsChatBuyerId: 1, - adID: adDetailsModel.id, - userID: myUserID, - senderName: adDetailsModel.adOwnerName, - ) + context: context, + isForBuyer: true, + adsChatBuyerId: 1, + adID: adDetailsModel.id, + userID: myUserID, + senderName: adDetailsModel.adOwnerName, + ) .whenComplete(() => navigateWithName(context, AppRoutes.chatView, arguments: chatViewArguments)); } } diff --git a/lib/views/advertisement/components/ads_list_widget.dart b/lib/views/advertisement/components/ads_list_widget.dart index fd14790..094baae 100644 --- a/lib/views/advertisement/components/ads_list_widget.dart +++ b/lib/views/advertisement/components/ads_list_widget.dart @@ -1,3 +1,6 @@ +import 'dart:developer'; + +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mc_common_app/classes/consts.dart'; @@ -12,7 +15,6 @@ import 'package:mc_common_app/utils/utils.dart'; import 'package:mc_common_app/view_models/ad_view_model.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; -import 'package:easy_localization/easy_localization.dart'; class AdsListWidget extends StatelessWidget { final List adsList; @@ -21,12 +23,12 @@ class AdsListWidget extends StatelessWidget { final bool shouldShowAdStatus; const AdsListWidget({ - Key? key, + super.key, required this.adsList, this.scrollPhysics, required this.shouldShowAdStatus, this.isAdsFragment = false, - }) : super(key: key); + }); @override Widget build(BuildContext context) { @@ -38,21 +40,29 @@ class AdsListWidget extends StatelessWidget { ], ); } - return ListView.separated( - itemCount: adsList.length, - shrinkWrap: true, - physics: scrollPhysics, - itemBuilder: (BuildContext context, int index) { - return AdCard( - adDetails: adsList[index], - isAdsFragment: isAdsFragment, - shouldShowAdStatus: shouldShowAdStatus, - ).onPress(() => navigateWithName(context, AppRoutes.adsDetailView, arguments: adsList[index])); - }, - separatorBuilder: (BuildContext context, int index) { - return 12.height; + return NotificationListener( + onNotification: (ScrollNotification scrollInfo) { + if (scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent && context.read().hasMoreData) { + log("should call more ads api:"); + } + return false; }, - padding: const EdgeInsets.symmetric(horizontal: 21), + child: ListView.separated( + itemCount: adsList.length, + shrinkWrap: true, + physics: scrollPhysics, + itemBuilder: (BuildContext context, int index) { + return AdCard( + adDetails: adsList[index], + isAdsFragment: isAdsFragment, + shouldShowAdStatus: shouldShowAdStatus, + ).onPress(() => navigateWithName(context, AppRoutes.adsDetailView, arguments: adsList[index])); + }, + separatorBuilder: (BuildContext context, int index) { + return 12.height; + }, + padding: const EdgeInsets.symmetric(horizontal: 21), + ), ); } } @@ -62,7 +72,7 @@ class AdCard extends StatelessWidget { final bool isAdsFragment; final bool shouldShowAdStatus; - const AdCard({Key? key, required this.adDetails, required this.isAdsFragment, required this.shouldShowAdStatus}) : super(key: key); + const AdCard({super.key, required this.adDetails, required this.isAdsFragment, required this.shouldShowAdStatus}); @override Widget build(BuildContext context) { diff --git a/lib/views/common_fragments/ads_fragment.dart b/lib/views/common_fragments/ads_fragment.dart index 0a61fa2..9339751 100644 --- a/lib/views/common_fragments/ads_fragment.dart +++ b/lib/views/common_fragments/ads_fragment.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.dart'; @@ -18,10 +19,9 @@ 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); + const AdsFragment({super.key}); List getAdsList(AdVM adVM) { if (adVM.isExploreAdsTapped) {