diff --git a/lib/scaffolds/list.dart b/lib/scaffolds/list.dart index 4a9ebc5..07d3eb4 100644 --- a/lib/scaffolds/list.dart +++ b/lib/scaffolds/list.dart @@ -8,9 +8,9 @@ import '../widgets/loading.dart'; class ListPayload { K cursor; List items; - bool end; + bool hasMore; - ListPayload({this.items, this.cursor, this.end}); + ListPayload({this.items, this.cursor, this.hasMore}); } // This is a scaffold for infinite scroll screens @@ -42,7 +42,7 @@ class _ListScaffoldState extends State> { List items = []; K cursor; - bool end; + bool hasMore; ScrollController _controller = ScrollController(); @@ -54,7 +54,8 @@ class _ListScaffoldState extends State> { if (_controller.offset + 100 > _controller.position.maxScrollExtent && !_controller.position.outOfRange && !loading && - !loadingMore) { + !loadingMore && + hasMore) { _loadMore(); } }); @@ -70,7 +71,7 @@ class _ListScaffoldState extends State> { var _payload = await widget.onRefresh(); items = _payload.items; cursor = _payload.cursor; - end = _payload.end; + hasMore = _payload.hasMore; } catch (err) { // print(err); error = err.toString(); @@ -92,7 +93,7 @@ class _ListScaffoldState extends State> { var _payload = await widget.onLoadMore(cursor); items.addAll(_payload.items); cursor = _payload.cursor; - end = _payload.end; + hasMore = _payload.hasMore; } catch (err) { print(err); } finally { @@ -106,7 +107,11 @@ class _ListScaffoldState extends State> { Widget _buildItem(BuildContext context, int index) { if (index == 2 * items.length) { - return Loading(more: true); + if (hasMore) { + return Loading(more: true); + } else { + return Container(); + } } if (index % 2 == 1) { diff --git a/lib/screens/news.dart b/lib/screens/news.dart index 0fbff72..4a19624 100644 --- a/lib/screens/news.dart +++ b/lib/screens/news.dart @@ -14,8 +14,8 @@ class NewsScreenState extends State { Future> fetchEvents(int page) async { var settings = SettingsProvider.of(context); var login = settings.activeLogin; - List data = await settings - .getWithCredentials('/users/$login/received_events?page=$page'); + List data = await settings.getWithCredentials( + '/users/$login/received_events?page=$page&per_page=$pageSize'); // print(data); return data.map((item) => Event.fromJSON(item)).toList(); } @@ -31,12 +31,12 @@ class NewsScreenState extends State { var page = 1; var items = await fetchEvents(page); return ListPayload( - cursor: page + 1, end: items.length < 30, items: items); + cursor: page + 1, hasMore: items.length == pageSize, items: items); }, onLoadMore: (page) async { var items = await fetchEvents(page); return ListPayload( - cursor: page + 1, end: items.length < 30, items: items); + cursor: page + 1, hasMore: items.length == pageSize, items: items); }, ); } diff --git a/lib/screens/repos.dart b/lib/screens/repos.dart index ccacac6..ef7ec3c 100644 --- a/lib/screens/repos.dart +++ b/lib/screens/repos.dart @@ -43,7 +43,7 @@ class _ReposScreenState extends State { return ListPayload( cursor: repo["pageInfo"]["endCursor"], items: repo["nodes"], - end: repo['pageInfo']['hasNextPage'], + hasMore: repo['pageInfo']['hasNextPage'], ); } diff --git a/lib/screens/users.dart b/lib/screens/users.dart index 4552078..4040e32 100644 --- a/lib/screens/users.dart +++ b/lib/screens/users.dart @@ -42,7 +42,7 @@ class _UsersScreenState extends State { return ListPayload( cursor: repo["pageInfo"]["endCursor"], - end: repo['pageInfo']['hasNextPage'], + hasMore: repo['pageInfo']['hasNextPage'], items: repo["nodes"], ); } diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index c2a197d..c8125e3 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -155,7 +155,7 @@ class Palette { static const gray = Color(0xff959da5); } -final pageSize = 20; +final pageSize = 30; final graphqlChunk1 = ''' title