2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-06-13 18:55:34 +00:00

Stock display now uses infinite scroll

This commit is contained in:
Oliver Walters
2021-03-01 13:17:57 +11:00
parent 64e544c043
commit d9a92216d2
2 changed files with 143 additions and 29 deletions

View File

@ -346,6 +346,8 @@ class _PaginatedPartListState extends State<PaginatedPartList> {
static const _pageSize = 25;
String _searchTerm;
final int categoryId;
_PaginatedPartListState(this.categoryId);
@ -357,12 +359,28 @@ class _PaginatedPartListState extends State<PaginatedPartList> {
_pagingController.addPageRequestListener((pageKey) {
_fetchPage(pageKey);
});
super.initState();
}
@override
void dispose() {
_pagingController.dispose();
super.dispose();
}
Future<void> _fetchPage(int pageKey) async {
try {
final page = await InvenTreePart().listPaginated(_pageSize, pageKey, filters: {"category": "${categoryId}"});
Map<String, String> filters = {
"category": "${categoryId}",
};
if (_searchTerm != null && _searchTerm.isNotEmpty) {
filters["search"] = _searchTerm;
}
final page = await InvenTreePart().listPaginated(_pageSize, pageKey, filters: filters);
final isLastPage = page.length < _pageSize;
// Construct a list of part objects
@ -413,8 +431,34 @@ class _PaginatedPartListState extends State<PaginatedPartList> {
);
}
void updateSearchTerm(String searchTerm) {
_searchTerm = searchTerm;
_pagingController.refresh();
}
@override
Widget build(BuildContext context) {
return CustomScrollView(
slivers: <Widget>[
// TODO: Introduce searching within the list
/*
SliverToBoxAdapter(child: TextField(
onChanged: updateSearchTerm,
)
),
*/
PagedSliverList.separated(
pagingController: _pagingController,
builderDelegate: PagedChildBuilderDelegate<InvenTreePart>(
itemBuilder: (context, item, index) {
return _buildPart(context, item);
}
),
separatorBuilder: (context, index) => const Divider(height: 1),
),
]
);
return PagedListView<int, InvenTreePart>.separated(
pagingController: _pagingController,
builderDelegate: PagedChildBuilderDelegate<InvenTreePart>(