RefreshController _refreshController = RefreshController(initialRefresh: false);
List list = [1, 2, 3, 4, 5, 6, 7];
void _onRefresh() async {
try {
await Future.delayed(Duration(seconds: 1));
list.insert(0, list[0] - 1);
_refreshController.refreshCompleted();
setState(() {});
} catch (e) {
_refreshController.refreshFailed();
}
}
void _onLoading() async {
try {
await Future.delayed(Duration(seconds: 1));
_refreshController.loadComplete();
var num = list.last + 1;
if (num == 10) {
_refreshController.loadFailed();
} else {
list.add(num);
_refreshController.loadComplete();
}
setState(() {});
} catch (e) {
_refreshController.loadComplete();
}
}
@override
Widget build(BuildContext context) {
return SmartRefresher(
enablePullUp: true,
enablePullDown: true,
header: CustomHeader(
builder: (BuildContext context, RefreshStatus mode) {
Widget body;
if (mode == RefreshStatus.idle) {
body = Text('下拉刷新');
} else if (mode == RefreshStatus.refreshing) {
body = Text('刷新中...');
} else if (mode == RefreshStatus.completed) {
body = Text('刷新成功');
} else if (mode == RefreshStatus.failed) {
body = Text('刷新失败');
} else if (mode == RefreshStatus.canRefresh) {
body = Text('松开刷新');
}
return Center(
child: body,
);
},
),
footer: ClassicFooter(),
controller: _refreshController,
onRefresh: _onRefresh,
onLoading: _onLoading,
child: ListView.builder(
itemCount: list.length,
itemExtent: 100,
itemBuilder: (BuildContext context, int index) {
return Card(
child: Center(
child: Text('${list[index]}'),
),
);
},
),
);
}