【Flutter 专题】20 图解 ListView 下拉刷新与上拉加载 (三)【RefreshIndicator】
小菜前段时间整理了两种 ListView 的异步加载数据时,下拉刷新与上滑加载更多的方式,每种方式都有自己的优势,网上也有很多大神讲解过 ListView 数据流的种种处理方式,小菜根据实际遇到的情况整理一下尝试的第三种方案。
RefreshIndicator 下拉刷新
Flutter 提供了自带刷新效果的 RefreshIndicator,这也是网上大神们用的最多的 Widget 之一,使用方式也很简单,RefreshIndicator 中提供了一个刷新的回调入口 onRefresh,仅需在该回调接口中处理数据请求即可,如下:
ScrollController 上滑动加载更多
至此,列表的下拉刷新就完成了,接下来处理【上滑加载更多】,这时我们可以借助 ScrollController,用来监听列表是否滑动到底部,主要分两步:
初始化时添加监听事件,判断是否滑动到最底部;
ListView 中添加监听方法。
至此,列表的下拉刷新与上滑加载更多就基本完成了;接下来需要将两种合并使用,也很简单,如下:
Tips: 注意处理好数据接口请求内容。
小优化
优化一:【上滑加载更多】添加动画效果
添加一个加载更多的布局 Widget;
在 itemCount 中将 item 个数 +1;
添加监听判断,当滑到最后一个 item 时展示加载更多到布局 Widget。
优化二:第一次初始化加载数据时添加 loading 动画
RefreshIndicator 中自带刷新的动画,所以小菜只是在第一次加载数据时添加一个 loading 动画,小菜只是填了一个小小的状态判断,如下包括异常情况下的失败页。
优化三:借助 Future.delayed() 进行延迟加载,使数据请求衔接性更好。
小菜刚接触 Flutter 时间不长,还有很多不清楚和不理解的地方,如果有不对的地方还希望多多指教。
来源:阿策小和尚
版权声明: 本文为 InfoQ 作者【阿策小和尚】的原创文章。
原文链接:【http://xie.infoq.cn/article/1eb0eda2461995bac6aaaebaf】。文章转载请联系作者。
评论