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项目控制台中文乱码