分页
一个支持 Flutter ListView - GridView 无限加载的小库。
适用于分页的新Flutter包
演示
![]() |
![]() |
![]() |
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 |
此小部件的数据源 |


