flutter 下拉刷新,上拉加载
- 基本属性
const RefreshIndicator({
Key key,
@required this.child,
this.displacement = 40.0,//指示器显示时距顶部位置
@required this.onRefresh,//下拉刷新回调
this.color,//指示器颜色,默认ThemeData.accentColor
this.backgroundColor,//指示器背景颜色,默认ThemeData.canvasColor
this.notificationPredicate = defaultScrollNotificationPredicate,
this.semanticsLabel,
this.semanticsValue,
})
- 基础Widget
ScrollController _scrollController = ScrollController(); //定义滚动Controller
bool has_more = false; //是否还有下一页
@override
Widget build(BuildContext context) {
return RefreshIndicator(
backgroundColor: MyColor.t_E4E6EC,
displacement: 0.h,
color: MyColor.lineStartBtnColor,
onRefresh: _onRefresh,
child: SingleChildScrollView(
scrollDirection: Axis.vertical,
controller: _scrollController,
child: Container(
padding: EdgeInsets.symmetric(horizontal: 14.h),
width: 258.h,
child: Column(
children: List.generate(taskList.length, (index) {
return taskItem(taskList[index]);
}),
)),
));
}
- 下拉刷新
// 刷新
Future<void> _onRefresh() async {
await Future.delayed(Duration(seconds: 0), () {
//TODO 执行刷新逻辑
});
}
- 上拉加载更多
void initState() {
super.initState();
_scrollController..addListener(() {
//向上滚动
if (_scrollController.position.pixels >
_scrollController.position.maxScrollExtent - 20) {
if (has_more) {
//是否还有下一页
//TODO
//监听滚动,执行加载下一页数据
}
}})}
上一篇:
IDEA上Java项目控制台中文乱码
