pagination api calling bug fixed.

ui_ux_rollout_merge
Sikander Saleem 2 weeks ago
parent 9130ade21d
commit cb1a1475fa

@ -12,6 +12,7 @@ import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/dashboard_latest/dashboard_provider.dart';
import 'package:test_sa/dashboard_latest/widgets/app_bar_widget.dart';
import 'package:test_sa/extensions/enum_extensions.dart';
import 'package:test_sa/dashboard_latest/widgets/progress_fragment.dart';
import 'package:test_sa/dashboard_latest/widgets/request_category_fragment_housekeeper.dart';
import 'package:test_sa/dashboard_latest/widgets/requests_fragment.dart';
@ -103,15 +104,86 @@ class _DashboardViewState extends State<DashboardView> {
void handleScroll() async {
_scrollController = ScrollController();
_scrollController.addListener(() async {
if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent && !_dashBoardProvider.isDetailLoading) {
if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent) {
final allRequestsProvider = Provider.of<AllRequestsProvider>(context, listen: false);
// Check which scenario is active and call appropriate pagination API
if (_dashBoardProvider.listIndex.isEmpty) {
// No category selected - paginate AllRequests
if (!allRequestsProvider.isAllLoading && allRequestsProvider.nextPage) {
allRequestsProvider.getAllRequests(context);
}
} else if (_dashBoardProvider.listIndex.length == 1 && _dashBoardProvider.isUnassignedTab(_dashBoardProvider.listIndex[0])) {
// Only UnAssigned tab selected - paginate with getRequestDetail
if (!_dashBoardProvider.isDetailLoading && _dashBoardProvider.nextPage) {
_dashBoardProvider.pageNum = _dashBoardProvider.pageNum + 1;
if (_dashBoardProvider.currentListIndex == null) {
} else {
_dashBoardProvider.getRequestDetail(
usersType: user.type!,
showLoader: false,
status: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex!].tag,
tabId: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex!].id);
status: _dashBoardProvider.tabs[_dashBoardProvider.listIndex[0]].tag,
tabId: _dashBoardProvider.tabs[_dashBoardProvider.listIndex[0]].id,
);
}
} else {
// Multi-select categories - paginate with getDashboardMultifilterRequests
if (!allRequestsProvider.isMultiFilterLoading && allRequestsProvider.nextPage) {
// Build filter arrays based on selected tabs
List<int> statusTransaction = [];
List<int> priority = [];
List<int> displayData = [];
for (int index in _dashBoardProvider.listIndex) {
if (index >= 0 && index < _dashBoardProvider.tabs.length) {
CategoryTabs tab = _dashBoardProvider.tabs[index];
// High Priority
if (tab.isHighPriority) {
if (!priority.contains(1)) priority.add(1);
}
// Overdue
if (tab.isOverDue) {
if (!displayData.contains(1)) displayData.add(1);
}
// Status categories
if (!tab.isHighPriority && !tab.isOverDue && tab.requestType != RequestTypeEnum.unassigned) {
switch (tab.requestType) {
case RequestTypeEnum.open:
if (!statusTransaction.contains(1)) statusTransaction.add(1);
break;
case RequestTypeEnum.inProgress:
if (!statusTransaction.contains(2)) statusTransaction.add(2);
break;
case RequestTypeEnum.completed:
if (!statusTransaction.contains(4)) statusTransaction.add(4);
break;
case RequestTypeEnum.closed:
if (!statusTransaction.contains(4)) statusTransaction.add(4);
break;
case RequestTypeEnum.canceled:
if (!statusTransaction.contains(5)) statusTransaction.add(5);
break;
case RequestTypeEnum.pendingAcknowledgment:
if (!statusTransaction.contains(3)) statusTransaction.add(3);
break;
case RequestTypeEnum.unassigned:
case RequestTypeEnum.highPriority:
case RequestTypeEnum.overdue:
break;
}
}
}
}
allRequestsProvider.getDashboardMultifilterRequests(
context,
pagination: false,
statusTransaction: statusTransaction,
priority: priority,
displayData: displayData,
);
}
}
}
});

Loading…
Cancel
Save