infinite_scroll_pagination 2.2.0
infinite_scroll_pagination: ^2.2.0 copied to clipboard

Load and display pages of items as the user scrolls down your screen.

Infinite Scroll Pagination Logo Badge GitHub Build Badge Gitter Badge Effective Dart Badge MIT License Badge Flutter Platform Badge

Infinite Scroll Pagination #

Unopinionated, extensible and highly customizable package to help you lazily load and display small chunks of data as the user scrolls down the screen – known as infinite scrolling pagination, endless scrolling pagination, auto-pagination, lazy loading pagination, progressive loading pagination, etc.

Designed to feel like part of the own Flutter framework.

Example Project

Tutorial #

By (step-by-step, hands-on, in-depth and illustrated).

Usage #

class CharacterListView extends StatefulWidget {
  _CharacterListViewState createState() => _CharacterListViewState();

class _CharacterListViewState extends State<CharacterListView> {
  static const _pageSize = 20;

  final PagingController<int, CharacterSummary> _pagingController =
      PagingController(firstPageKey: 0);

  void initState() {
    _pagingController.addPageRequestListener((pageKey) {

  Future<void> _fetchPage(int pageKey) async {
    try {
      final newItems = await RemoteApi.getCharacterList(pageKey, _pageSize);
      final isLastPage = newItems.length < _pageSize;
      if (isLastPage) {
      } else {
        final nextPageKey = pageKey + newItems.length;
        _pagingController.appendPage(newItems, nextPageKey);
    } catch (error) {
      _pagingController.error = error;

  Widget build(BuildContext context) => 
      // Don't worry about displaying progress or error indicators on screen; the 
      // package takes care of that. If you want to customize them, use the 
      // [PagedChildBuilderDelegate] properties.
      PagedListView<int, CharacterSummary>(
        pagingController: _pagingController,
        builderDelegate: PagedChildBuilderDelegate<CharacterSummary>(
          itemBuilder: (context, item, index) => CharacterListItem(
            character: item,

  void dispose() {

For more usage examples, please take a look at our cookbook or check out the example project.

Features #

API Overview #

API Diagram

Motivation #

Flutter indeed makes our job way easier than other toolkits when talking about infinite scrolling. It's when we combine that with automated pagination and status indicators that things get complicated.

ListView.builder builds your items on demand, but it doesn't help you with fetching them or displaying status indicators.

Your listing will go through several stages: first page loading, first page error, subsequent page loading, subsequent page error, empty list and completed list. Infinite Scroll Pagination takes care of orchestrating between them, rendering each one and letting you know when more data is needed.

pub points


Load and display pages of items as the user scrolls down your screen.

Repository (GitHub)
View/report issues


API reference




flutter, sliver_tools


Packages that depend on infinite_scroll_pagination