Eagerly load next set of results
This commit is contained in:
parent
e96f5f0a1f
commit
89d4feffed
1 changed files with 20 additions and 9 deletions
|
@ -43,6 +43,7 @@ class Gallery extends StatefulWidget {
|
|||
|
||||
class _GalleryState extends State<Gallery> {
|
||||
static final int kLoadLimit = 100;
|
||||
static final int kEagerLoadTrigger = 10;
|
||||
|
||||
final Logger _logger = Logger("Gallery");
|
||||
final List<List<File>> _collatedFiles = List<List<File>>();
|
||||
|
@ -133,19 +134,14 @@ class _GalleryState extends State<Gallery> {
|
|||
}
|
||||
|
||||
Widget _buildListItem(BuildContext context, int index) {
|
||||
if (_shouldLoadNextItems(index)) {
|
||||
// Eagerly load next batch
|
||||
_loadNextItems();
|
||||
}
|
||||
if (index == _collatedFiles.length) {
|
||||
if (_hasLoadedAll || widget.asyncLoader == null) {
|
||||
return Container();
|
||||
}
|
||||
widget.asyncLoader(_files.length, 100).then((files) {
|
||||
setState(() {
|
||||
_scrollOffset = _scrollController.offset;
|
||||
if (files.length == 0) {
|
||||
_hasLoadedAll = true;
|
||||
}
|
||||
_files.addAll(files);
|
||||
});
|
||||
});
|
||||
return loadWidget;
|
||||
}
|
||||
var files = _collatedFiles[index];
|
||||
|
@ -154,6 +150,21 @@ class _GalleryState extends State<Gallery> {
|
|||
);
|
||||
}
|
||||
|
||||
bool _shouldLoadNextItems(int index) =>
|
||||
index == _collatedFiles.length - kEagerLoadTrigger;
|
||||
|
||||
void _loadNextItems() {
|
||||
widget.asyncLoader(_files.length, 100).then((files) {
|
||||
setState(() {
|
||||
_scrollOffset = _scrollController.offset;
|
||||
if (files.length == 0) {
|
||||
_hasLoadedAll = true;
|
||||
}
|
||||
_files.addAll(files);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Widget _getDay(int timestamp) {
|
||||
return Container(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
|
|
Loading…
Add table
Reference in a new issue