分页

一个支持 Flutter ListView - GridView 无限加载的小库。

适用于分页的新Flutter包

演示

list_view2 grid_view sliver_demo

DataSource

PageKeyedDataSource

通过页码加载的示例

1, 定义数据源

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

即将推出 :))

OffsetDataSource

即将推出 :))

IndexDataSource

即将推出 :))

文档

BaseWidget类

Dart 属性 描述 默认值
emptyBuilder 空部件的构建器
loadingBuilder 加载部件的构建器
errorBuilder 错误部件的构建器
itemBuilder 条目部件的构建器
pageDataSource 此小部件的数据源

GitHub

https://github.com/dangngocduc/flutter_paging