分布加载,实现数据与UI解耦。
Note: 这个项目还处于开发阶段. 欢迎Pull Requests.
首先, 添加 flutter_paging
,参加dependency in your pubspec.yaml file.
-
PagingView : 分页组件基础控件.
-
PagingListView : PagingView的子类,包裹了ListView.
KeyedDataSource
分页的核心,数据的获取由dataSource
完成。
Note: 不要忘记调用 dataSource.init()
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Paging ListView"),
),
body: RefreshIndicator(
onRefresh: widget.dataSource.refresh,
child: PagingListView<String>.builder(
itemBuilder: (context, index, item) {
return Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text("paging->$item"),
));
},
dataSource: widget.dataSource,
loadingIndicator: Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: CircularProgressIndicator(),
),
),
noMoreDataAvailableItem: Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text("no more data avaliable~"),
),
),
),
),
);
}