Merge pull request 'Fixed pagination bug in tender like filter and fixed current page bug in same page' (#129) from Fixed_like_tender_bugs into main

Reviewed-on: https://repo.ravanertebat.com/TM/tm_app/pulls/129
This commit is contained in:
a.ghabeli
2025-09-14 14:06:16 +03:30
6 changed files with 60 additions and 50 deletions
+1 -2
View File
@@ -126,7 +126,6 @@ if (reset) {
_currentFeedbackType = feedbackType; _currentFeedbackType = feedbackType;
} }
if (!reset && (isLoadingMore || !hasMore)) { if (!reset && (isLoadingMore || !hasMore)) {
return; return;
} }
@@ -226,6 +225,7 @@ if (reset) {
// Clear data when status changes // Clear data when status changes
_clearAllData(); _clearAllData();
selectedStatus = status; selectedStatus = status;
currentPage = 1;
notifyListeners(); notifyListeners();
} }
@@ -298,7 +298,6 @@ Future<void> callWithFilter() async {
} }
} }
int currentPage = 1; int currentPage = 1;
int get totalPages { int get totalPages {
@@ -78,6 +78,7 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
data: viewModel.likedTendersData!, data: viewModel.likedTendersData!,
status: TenderFeedback.liked.value, status: TenderFeedback.liked.value,
isDesktop: true, isDesktop: true,
isMobile: false,
); );
} else if (viewModel.selectedStatus == } else if (viewModel.selectedStatus ==
YourTendersStrings.dislikeTenders && YourTendersStrings.dislikeTenders &&
@@ -86,6 +87,7 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
data: viewModel.likedTendersData!, data: viewModel.likedTendersData!,
status: TenderFeedback.disliked.value, status: TenderFeedback.disliked.value,
isDesktop: true, isDesktop: true,
isMobile: false,
); );
} else if (viewModel.data != null) { } else if (viewModel.data != null) {
content = TendersSubmitted( content = TendersSubmitted(
@@ -108,7 +110,7 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
children: [ children: [
const Spacer(), const Spacer(),
Text( Text(
'Page', YourTendersStrings.page,
style: TextStyle( style: TextStyle(
fontSize: 13.0.sp(), fontSize: 13.0.sp(),
fontWeight: FontWeight.w300, fontWeight: FontWeight.w300,
@@ -124,7 +126,7 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
return AlertDialog( return AlertDialog(
backgroundColor: backgroundColor:
AppColors.backgroundColor, AppColors.backgroundColor,
title: const Text('Select Page'), title: const Text(YourTendersStrings.selectPage),
content: SizedBox( content: SizedBox(
width: 200.0.w(), width: 200.0.w(),
height: 300.0.h(), height: 300.0.h(),
@@ -134,7 +136,7 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
final pageNumber = index + 1; final pageNumber = index + 1;
return ListTile( return ListTile(
title: Text( title: Text(
'Page $pageNumber', '${YourTendersStrings.page} $pageNumber',
), ),
onTap: onTap:
() => Navigator.pop( () => Navigator.pop(
@@ -181,7 +183,7 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
), ),
SizedBox(width: 5.0.w()), SizedBox(width: 5.0.w()),
Text( Text(
'of', YourTendersStrings.of,
style: TextStyle( style: TextStyle(
fontSize: 14.0.sp(), fontSize: 14.0.sp(),
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
@@ -69,6 +69,7 @@ class _YourTendersMobilePageState extends State<YourTendersMobilePage> {
data: viewModel.likedTendersData!, data: viewModel.likedTendersData!,
status: TenderFeedback.liked.value, status: TenderFeedback.liked.value,
isDesktop: false, isDesktop: false,
isMobile: true,
), ),
) )
else if (viewModel.selectedStatus == else if (viewModel.selectedStatus ==
@@ -79,6 +80,7 @@ class _YourTendersMobilePageState extends State<YourTendersMobilePage> {
data: viewModel.likedTendersData!, data: viewModel.likedTendersData!,
status: TenderFeedback.disliked.value, status: TenderFeedback.disliked.value,
isDesktop: false, isDesktop: false,
isMobile: true,
), ),
) )
else if (viewModel.data != null) else if (viewModel.data != null)
@@ -82,6 +82,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
data: viewModel.likedTendersData!, data: viewModel.likedTendersData!,
status: TenderFeedback.liked.value, status: TenderFeedback.liked.value,
isDesktop: false, isDesktop: false,
isMobile: false,
); );
} else if (viewModel.selectedStatus == } else if (viewModel.selectedStatus ==
YourTendersStrings.dislikeTenders && YourTendersStrings.dislikeTenders &&
@@ -90,6 +91,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
data: viewModel.likedTendersData!, data: viewModel.likedTendersData!,
status: TenderFeedback.disliked.value, status: TenderFeedback.disliked.value,
isDesktop: false, isDesktop: false,
isMobile: false,
); );
} else if (viewModel.data != null) { } else if (viewModel.data != null) {
content = TendersSubmitted( content = TendersSubmitted(
@@ -112,7 +114,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
children: [ children: [
const Spacer(), const Spacer(),
Text( Text(
'Page', YourTendersStrings.page,
style: TextStyle( style: TextStyle(
fontSize: 13.0, fontSize: 13.0,
fontWeight: FontWeight.w300, fontWeight: FontWeight.w300,
@@ -127,7 +129,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
builder: (context) { builder: (context) {
return AlertDialog( return AlertDialog(
backgroundColor: AppColors.backgroundColor, backgroundColor: AppColors.backgroundColor,
title: const Text('Select Page'), title: const Text(YourTendersStrings.selectPage),
content: SizedBox( content: SizedBox(
width: 200.0.w(), width: 200.0.w(),
height: 300.0.h(), height: 300.0.h(),
@@ -136,7 +138,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
itemBuilder: (context, index) { itemBuilder: (context, index) {
final pageNumber = index + 1; final pageNumber = index + 1;
return ListTile( return ListTile(
title: Text('Page $pageNumber'), title: Text('${YourTendersStrings.page} $pageNumber'),
onTap: () => Navigator.pop( onTap: () => Navigator.pop(
context, context,
pageNumber, pageNumber,
@@ -181,7 +183,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
), ),
SizedBox(width: 5.0), SizedBox(width: 5.0),
Text( Text(
'of', YourTendersStrings.page,
style: TextStyle( style: TextStyle(
fontSize: 14.0.sp(), fontSize: 14.0.sp(),
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
@@ -18,4 +18,7 @@ class YourTendersStrings {
static const noLikedTenders = 'You havent liked any tenders yet !'; static const noLikedTenders = 'You havent liked any tenders yet !';
static const noDislikedTenders = 'You havent disliked any tenders yet !'; static const noDislikedTenders = 'You havent disliked any tenders yet !';
static const noTendersSubmitted = 'You havent submitted any tenders yet !'; static const noTendersSubmitted = 'You havent submitted any tenders yet !';
static const page = 'Page';
static const of = 'of';
static const selectPage ='Select Page';
} }
@@ -13,11 +13,13 @@ class LikedDislikedTendersList extends StatefulWidget {
final LikedTendersResponse data; final LikedTendersResponse data;
final String status; final String status;
final bool isDesktop; final bool isDesktop;
final bool isMobile;
const LikedDislikedTendersList({ const LikedDislikedTendersList({
required this.data, required this.data,
required this.status, required this.status,
required this.isDesktop, required this.isDesktop,
required this.isMobile,
super.key, super.key,
}); });
@@ -69,7 +71,7 @@ class _LikedDislikedTendersListState extends State<LikedDislikedTendersList> {
final itemCount = items.length + (vm.isLoadingMore ? 1 : 0); final itemCount = items.length + (vm.isLoadingMore ? 1 : 0);
return ListView.builder( return ListView.builder(
controller: _controller, controller: widget.isMobile ? _controller : null,
itemCount: itemCount, itemCount: itemCount,
itemBuilder: (context, index) { itemBuilder: (context, index) {
if (index >= items.length) { if (index >= items.length) {