Merge pull request 'home_your_tenders_pagination' (#106) from home_your_tenders_pagination into main

Reviewed-on: https://repo.ravanertebat.com/TM/tm_app/pulls/106
This commit is contained in:
s.najafnejad
2025-09-07 10:48:06 +03:30
15 changed files with 846 additions and 101 deletions
+17 -9
View File
@@ -169,7 +169,8 @@ class DesktopHomePage extends StatelessWidget {
}
Widget _yourTenderText(HomeViewModel homeViewModel) {
final isYourTenders = homeViewModel.data?.data?.isNotEmpty ?? false;
final isYourTenders =
homeViewModel.data?.data?.tenders!.isNotEmpty ?? false;
return ConstrainedBox(
constraints: BoxConstraints(maxWidth: 740),
child: Align(
@@ -190,16 +191,23 @@ class DesktopHomePage extends StatelessWidget {
Widget _bottomListView(HomeViewModel homeViewModel) {
final controller = ScrollController();
controller.addListener(() {
if (homeViewModel.isRecommendedMode) {
if (controller.position.pixels >=
controller.position.maxScrollExtent - 200) {
if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) {
homeViewModel.getHomeRecommandTenders();
}
if (!homeViewModel.isRecommendedMode) {
// YourTenders
if (controller.position.pixels >=
controller.position.maxScrollExtent - 200) {
if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) {
homeViewModel.getYourTenders();
}
}
});
} else {
// Recommended
if (controller.position.pixels >=
controller.position.maxScrollExtent - 200) {
if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) {
homeViewModel.getHomeRecommendTenders();
}
}
}
return SizedBox(
width: 740,
+13 -3
View File
@@ -163,7 +163,8 @@ class MobileHomePage extends StatelessWidget {
}
Widget _yourTenderText(HomeViewModel homeViewModel) {
final isYourTenders = homeViewModel.data?.data?.isNotEmpty ?? false;
final isYourTenders =
homeViewModel.data?.data?.tenders!.isNotEmpty ?? false;
return Padding(
padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
child: Text(
@@ -183,11 +184,20 @@ class MobileHomePage extends StatelessWidget {
final controller = ScrollController();
controller.addListener(() {
if (homeViewModel.isRecommendedMode) {
if (!homeViewModel.isRecommendedMode) {
// YourTenders
if (controller.position.pixels >=
controller.position.maxScrollExtent - 200) {
if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) {
homeViewModel.getHomeRecommandTenders();
homeViewModel.getYourTenders();
}
}
} else {
// Recommended
if (controller.position.pixels >=
controller.position.maxScrollExtent - 200) {
if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) {
homeViewModel.getHomeRecommendTenders();
}
}
}
+17 -9
View File
@@ -195,7 +195,8 @@ class TabletHomePage extends StatelessWidget {
}
Widget _yourTenderText(HomeViewModel homeViewModel) {
final isYourTenders = homeViewModel.data?.data?.isNotEmpty ?? false;
final isYourTenders =
homeViewModel.data?.data?.tenders!.isNotEmpty ?? false;
return Text(
isYourTenders ? HomeStrings.yourTenders : HomeStrings.recommendedTenders,
style: TextStyle(
@@ -209,16 +210,23 @@ class TabletHomePage extends StatelessWidget {
Widget _bottomListView(HomeViewModel homeViewModel) {
final controller = ScrollController();
controller.addListener(() {
if (homeViewModel.isRecommendedMode) {
if (controller.position.pixels >=
controller.position.maxScrollExtent - 200) {
if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) {
homeViewModel.getHomeRecommandTenders();
}
if (!homeViewModel.isRecommendedMode) {
// YourTenders
if (controller.position.pixels >=
controller.position.maxScrollExtent - 200) {
if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) {
homeViewModel.getYourTenders();
}
}
});
} else {
// Recommended
if (controller.position.pixels >=
controller.position.maxScrollExtent - 200) {
if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) {
homeViewModel.getHomeRecommendTenders();
}
}
}
return SizedBox(
width: double.infinity,
@@ -21,9 +21,9 @@ class TendersSubmitted extends StatelessWidget {
? const Center(child: Text('No submitted projects yet.'))
: ListView.builder(
padding: const EdgeInsets.only(top: 20),
itemCount: approvedTenders.data!.length,
itemCount: approvedTenders.data!.tenders!.length,
itemBuilder: (context, index) {
final tender = approvedTenders.data![index];
final tender = approvedTenders.data!.tenders![index];
return TenderCard(
date: tender.createdAt!.toString(),
title: tender.tender!.title!,