Used to paginate any type of data
Simply use the Chunker
class to select the value you'll be using as your identifier between chunks. Then supply a function to be called each time you need a new chunk from your data source. Once those are provided, a single function is all that's needed to infinitely walk through your data.
final chunker = Chunker<String, String>(
cursorSelector: (v) => v,
dataChunker: (cursor, limit) {
final isFirstRun = cursor == null;
return isFirstRun
? dataSource.take(limit)
: dataSource
.skipWhile((value) => value != cursor)
.skip(1) // Start after the previous cursor
.take(limit);
},
);
For the first chunk you can provide a new Chunk with a custom limit or provide null
to accept the default limit of 20
final Chunk<String, String> nextChunk = await chunker.getNext(
Chunk(limit: 15),
);
For all future chunks, all you need to do is pass the previous chunk in.
await chunker.getNext(nextChunk);
Check out a simple Dart only example listing out US States in chunks.
Check out a more complete Flutter example derived from the flutter infinite list example created for the bloc library.