Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
library-app-flutter
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ilham Maulana
library-app-flutter
Commits
a80e1707
Commit
a80e1707
authored
Aug 07, 2024
by
Ilham Maulana
💻
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: paging loans (admin access)
parent
126b9adc
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
68 additions
and
9 deletions
+68
-9
auth_provider.dart
lib/src/providers/auth_provider.dart
+6
-2
admin_loan_list.dart
lib/src/widgets/loans/admin_loan_list.dart
+62
-7
No files found.
lib/src/providers/auth_provider.dart
View file @
a80e1707
...
...
@@ -488,8 +488,8 @@ class AuthProvider with ChangeNotifier {
url
+=
'?near_outstanding=True'
;
}
else
if
(
type
==
"overdue"
)
{
url
+=
'?overdue=True'
;
}
else
{
null
;
}
else
if
(
pageNumber
>
1
)
{
url
+=
"?page=
$pageNumber
"
;
}
if
(
token
!=
null
)
{
...
...
@@ -512,6 +512,10 @@ class AuthProvider with ChangeNotifier {
}
else
{
loans
=
data
[
"data"
];
}
hasNextPage
=
data
[
"has_next"
];
hasPrevPage
=
data
[
"has_prev"
];
pageNumber
=
data
[
"page_number"
];
totalPages
=
data
[
"total_pages"
];
}
else
{
final
code
=
response
.
statusCode
;
debugPrint
(
"Error: Fetch upcoming loans failed,
$code
"
);
...
...
lib/src/widgets/loans/admin_loan_list.dart
View file @
a80e1707
...
...
@@ -36,6 +36,40 @@ class _AdminLoanList extends State<AdminLoanList> {
super
.
initState
();
}
ScrollController
listScrollController
=
ScrollController
();
void
scrollToTop
()
{
if
(
listScrollController
.
hasClients
)
{
final
position
=
listScrollController
.
position
.
minScrollExtent
;
listScrollController
.
jumpTo
(
position
);
}
}
Future
<
void
>
nextPage
()
async
{
if
(
Provider
.
of
<
AuthProvider
>(
context
,
listen:
false
).
hasNextPage
)
{
Provider
.
of
<
AuthProvider
>(
context
,
listen:
false
).
setPage
(
Provider
.
of
<
AuthProvider
>(
context
,
listen:
false
).
pageNumber
+
1
,
);
}
else
{
Provider
.
of
<
AuthProvider
>(
context
,
listen:
false
).
setPage
(
Provider
.
of
<
AuthProvider
>(
context
,
listen:
false
).
totalPages
!);
}
Provider
.
of
<
AuthProvider
>(
context
,
listen:
false
).
getMemberLoan
();
scrollToTop
();
}
Future
<
void
>
prevPage
()
async
{
if
(
Provider
.
of
<
AuthProvider
>(
context
,
listen:
false
).
hasPrevPage
)
{
Provider
.
of
<
AuthProvider
>(
context
,
listen:
false
).
setPage
(
Provider
.
of
<
AuthProvider
>(
context
,
listen:
false
).
pageNumber
-
1
,
);
}
else
{
Provider
.
of
<
AuthProvider
>(
context
,
listen:
false
).
setPage
(
1
);
}
Provider
.
of
<
AuthProvider
>(
context
,
listen:
false
).
getMemberLoan
();
scrollToTop
();
}
@override
Widget
build
(
BuildContext
context
)
{
return
Consumer
<
AuthProvider
>(
builder:
(
context
,
loanProvider
,
child
)
{
...
...
@@ -63,13 +97,34 @@ class _AdminLoanList extends State<AdminLoanList> {
headerSliverBuilder:
(
BuildContext
context
,
bool
innerBoxIsScrolled
)
{
return
[
TopAppBar
(
title:
title
)];
},
body:
ListView
(
children:
List
.
generate
(
loans
.
length
,
(
index
)
{
return
LoanItem
(
loans
.
elementAt
(
index
),
user:
loans
.
elementAt
(
index
).
user
,
);
}),
body:
ListView
.
builder
(
controller:
listScrollController
,
itemCount:
loans
.
length
+
1
,
itemBuilder:
(
context
,
index
)
{
if
(
index
<
loans
.
length
)
{
return
LoanItem
(
loans
.
elementAt
(
index
),
);
}
else
{
return
Container
(
padding:
const
EdgeInsets
.
all
(
10
),
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
spaceBetween
,
children:
[
ElevatedButton
(
onPressed:
prevPage
,
child:
const
Text
(
'Prev'
),
),
Text
(
loanProvider
.
pageNumber
.
toString
()),
ElevatedButton
(
onPressed:
nextPage
,
child:
const
Text
(
'Next'
),
),
],
),
);
}
},
),
);
}
else
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment