worklist pagination added.

merge-requests/182/head
Sikander Saleem 3 years ago
parent 227855a6a5
commit cd091b696a

@ -47,7 +47,7 @@ class WorkListApiClient {
Map<String, dynamic> postParams = { Map<String, dynamic> postParams = {
"P_NOTIFICATION_TYPE": pNotificationType, "P_NOTIFICATION_TYPE": pNotificationType,
"P_PAGE_NUM": pPageNum, "P_PAGE_NUM": pPageNum,
"P_PAGE_LIMIT": 50, "P_PAGE_LIMIT": 20,
"P_ITEM_TYPE": pItemType, "P_ITEM_TYPE": pItemType,
"P_SEARCH_FROM_USER": pSearchUser, "P_SEARCH_FROM_USER": pSearchUser,
"P_SEARCH_ITEM_TYPE_DSP_NAME": pSearchItemType, "P_SEARCH_ITEM_TYPE_DSP_NAME": pSearchItemType,

@ -93,10 +93,12 @@ class _WorkListScreenState extends State<WorkListScreen> {
final ScrollController _controller = ScrollController(); final ScrollController _controller = ScrollController();
int pNotificationType = 1; int pNotificationType = 1;
ScrollController? _scrollController;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_scrollController = ScrollController()..addListener(_scrollListener);
providerData = Provider.of<DashboardProviderModel>(context, listen: false); providerData = Provider.of<DashboardProviderModel>(context, listen: false);
calculateCounter(); calculateCounter();
if (workListItemIndex != null) getWorkList(); if (workListItemIndex != null) getWorkList();
@ -154,7 +156,7 @@ class _WorkListScreenState extends State<WorkListScreen> {
ItgFormsModel? itgFormsModel; ItgFormsModel? itgFormsModel;
int? itgRequestTypeIndex; int? itgRequestTypeIndex;
Future<void> getWorkList({bool showLoading = true}) async { Future<void> getWorkList({bool showLoading = true, bool isCallingFromRefresh = false}) async {
try { try {
if (showLoading) Utils.showLoading(context); if (showLoading) Utils.showLoading(context);
if (workListItemTypes[workListItemIndex!].key == "ITG") { if (workListItemTypes[workListItemIndex!].key == "ITG") {
@ -173,7 +175,12 @@ class _WorkListScreenState extends State<WorkListScreen> {
} }
} else { } else {
itgRequestTypeIndex = null; itgRequestTypeIndex = null;
workList = await WorkListApiClient().getWorkList(pageNumber, workListItemTypes[workListItemIndex!].key, pNotificationType.toString()); List<WorkListResponseModel>? _list = await WorkListApiClient().getWorkList(pageNumber, workListItemTypes[workListItemIndex!].key, pNotificationType.toString());
if (workList != null && _list != null && !isCallingFromRefresh) {
workList!.addAll(_list);
} else {
workList = _list;
}
AppState().setWorkList = workList; AppState().setWorkList = workList;
} }
if (showLoading) Utils.hideLoading(context); if (showLoading) Utils.hideLoading(context);
@ -188,9 +195,10 @@ class _WorkListScreenState extends State<WorkListScreen> {
try { try {
_refreshController.refreshCompleted(); _refreshController.refreshCompleted();
Utils.showLoading(context); Utils.showLoading(context);
pageNumber = 1;
List dataOnRefresh = await Future.wait([ List dataOnRefresh = await Future.wait([
providerData.fetchWorkListCounter(context, showLoading: false), providerData.fetchWorkListCounter(context, showLoading: false),
getWorkList(showLoading: false), getWorkList(showLoading: false, isCallingFromRefresh: true),
]); ]);
calculateCounter(); calculateCounter();
Utils.hideLoading(context); Utils.hideLoading(context);
@ -203,9 +211,19 @@ class _WorkListScreenState extends State<WorkListScreen> {
@override @override
void dispose() { void dispose() {
_scrollController?.dispose();
super.dispose(); super.dispose();
} }
void _scrollListener() {
if (_scrollController!.position.pixels == _scrollController!.position.maxScrollExtent) {
pageNumber = pageNumber + 1;
if (itgRequestTypeIndex == null && workListItemTypes[workListItemIndex!].value != workList!.length) {
getWorkList();
}
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -236,6 +254,7 @@ class _WorkListScreenState extends State<WorkListScreen> {
} }
if (workListItemIndex != index && !workListItemTypes[index].disable) { if (workListItemIndex != index && !workListItemTypes[index].disable) {
workListItemIndex = index; workListItemIndex = index;
pageNumber = 1;
if (workListItemTypes[index].value == 0) { if (workListItemTypes[index].value == 0) {
workList = []; workList = [];
itgRequestTypeIndex = null; itgRequestTypeIndex = null;
@ -273,6 +292,7 @@ class _WorkListScreenState extends State<WorkListScreen> {
), ),
controller: _refreshController, controller: _refreshController,
onRefresh: _onRefresh, onRefresh: _onRefresh,
scrollController: _scrollController,
child: SingleChildScrollView( child: SingleChildScrollView(
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
child: itgRequestTypeIndex != null child: itgRequestTypeIndex != null
@ -354,7 +374,6 @@ class _WorkListScreenState extends State<WorkListScreen> {
setState(() {}); setState(() {});
} }
} }
} else { } else {
verifyWorkListCounter(); verifyWorkListCounter();
if (mounted) setState(() {}); if (mounted) setState(() {});

Loading…
Cancel
Save