Paging

A small library support load infinite for ListView - GridView on Flutter.

A new Flutter package for paging

Demo

list_view2 grid_view sliver_demo

DataSource

PageKeyedDataSource

Example for load with page index

1, Define Source

class ListViewDataSource extends paging.PageKeyedDataSource<int, Note> {
  NoteRepository noteRepository;
  ListViewDataSource(this.noteRepository) {
    isEndList = false;
  }

  @override
  Future<Tuple2<List<Note>, int>> loadInitial() async {
    final result = await noteRepository.getNotes(0);
    return Tuple2(result, 0);
  }

  @override
  Future<Tuple2<List<Note>, int>> loadPageAfter(int params) async {
    if (params == 6) isEndList = true;
    final result = await noteRepository.getNotes(params + 1);
    return Tuple2(result, params + 1);
  }
}

2, ListView

      ListView<Note>(
        key: key,
        padding: EdgeInsets.all(16),
        itemBuilder: (context, data, child) {
          return NoteWidget(data);
        },
        pageDataSource: dataSource,
      ),

3, GridView

      paging.GridView<Note>(
        key: key,
        padding: EdgeInsets.all(16),
        itemBuilder: (context, data, child) {
          return NoteGridWidget(data);
        },
        delegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 2,
          mainAxisSpacing: 16,
          crossAxisSpacing: 16
        ),
        pageDataSource: dataSource,
      ),

ItemKeyedDataSource

Coming Soon :))

OffsetDataSource

Coming Soon :))

IndexDataSource

Coming Soon :))

Documentation

BaseWidget Class

Dart attribute Description Default Value
emptyBuilder builder for empty widget
loadingBuilder builder for loading widget
errorBuilder builder for error widget
itemBuilder builder for item widget
pageDataSource DataSource for this widget

GitHub