Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ListView下拉刷新与加载更多

ListView下拉刷新与加载更多

作者头像
flyou
发布于 2019-08-06 09:12:20
发布于 2019-08-06 09:12:20
2.6K00
代码可运行
举报
文章被收录于专栏:flutter开发者flutter开发者
运行总次数:0
代码可运行

上期回顾


在前面的文章中我们看了进度组件ProgressIndicator的用法,怎么样大家Get了吗? 那么我们今天就来看下ProgressIndicator的应用,一起来看下Flutter中的下拉刷新与加载更多是如何实现的。

下拉刷新


在Flutter中系统已经为我们提供了google material design的刷新效果,我们可以使用RefreshIndicator组件来实现Flutter中的下拉刷新,下面们还是先来看下如何使用吧

构造方法:

代码语言:javascript
代码运行次数:0
运行
复制

那么我们还是结合ListView的使用来看下举个例子

代码语言:javascript
代码运行次数:0
运行
复制

首先我们还是先来回顾下ListView的用法,我们使用ListView.builder来创建了一个ListView使用 List.generate()方法来创建了一个长度为16的List,并把List里的值赋值给ListView Item中的ListTile。

那么,我们在上面的基础上加上下拉刷新组件再来试下效果。

代码语言:javascript
代码运行次数:0
运行
复制

在上面的代码中我们使用_handleRefresh()方法来处理下拉刷新的回调

代码语言:javascript
代码运行次数:0
运行
复制

其中 Future.delayed()方法可以选择延迟处理任务,这里我们假设网络的延迟是5秒,来看下效果。

可以看到,当我们下拉刷新结束后我们ListView的数据总数变成了40条。

接下来我们来修改下刷新进度的颜色与背景颜色再来看下效果。

当然,这个下拉刷新不是仅仅只能用在ListView中的,其他的组件都可以使用这个的。

下面我们就来介绍下如何实现ListView的上拉加载更多吧。

上拉加载更多


对于加载更多的组件在Flutter中是没有提供的,所以在这里我们就需要考虑如何实现的。

在ListView中有一个ScrollController属性,它就是专门来控制ListView滑动事件,在这里我们可以根据ListView的位置来判断是否滑动到了底部来做加载更多的处理。

在这里我们可以使用如下代码来判断ListView 是否华东到了底部

代码语言:javascript
代码运行次数:0
运行
复制

_scrollController是我们初始化的ScrollController对象,通过监听我们可以判断现在的位置是否是最大的下滑位置来判断是否下滑到了底部。

下面看下代码

代码语言:javascript
代码运行次数:0
运行
复制

运行效果:

是的,看着上面的效果我们已经实现了下拉加载更多,但是如果在正在请求的过程中多次下拉就会造成多次加载更多的情况,所以我们还得对这个做下处理。

代码语言:javascript
代码运行次数:0
运行
复制

可以看到,我们仅仅在上面代码的基础上加上了一个isLoading的变量,当这个变量的值为true时,就不会触发加载更多的操作。

嗯,这样貌似就可以了,但是你在加载更多的过程总应该让用户看得到吧,比如给用户一个提示啊。

好吧,我们尝试在下拉的过程中给用个提示。

首先我们创建加载更多时显示的Widget

代码语言:javascript
代码运行次数:0
运行
复制

其实就是一个简单的Text哈。

然后修改ListView,使得itemCount数目加1,当是最后一条时显示加载中的View,不是最后一条显示正常的Widget

代码语言:javascript
代码运行次数:0
运行
复制

好吧,我们还是来看下效果:

这样我们就实现了加载更多的提示效果,当然我们也可以试试其他的效果比如

实现起来也很简单,只是替换下加载更多的Item而已

代码语言:javascript
代码运行次数:0
运行
复制

当然,其他的效果大家可以根据自己的需要去自己实现哦

当然,上面的下拉刷新和加载更对可以同时用在一个ListView上面,这里就不再贴代码了,大家自己在下面试下。

小结


  • RefreshIndicator可以显示下拉刷新
  • 使用ScrollController可以监听滑动事件,判断当前view所处的位置
  • 可以根据item所处的位置来处理加载更多显示效果

我怀疑这个是个坏掉的二维码,分享到朋友圈试试?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 flutter开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
自定义SwipeRefreshLayout实现ListView上拉加载下拉刷新
说实话现在大部分人都不在用ListView了,不过说实话如果仅仅是普通的列表其实用哪个都无所谓的。 可能有人会说有好多第三方的下拉刷新上拉加载的框架,但是我觉得吧,有些东西自己能实现的就还是用自己写的好。 不罗嗦了,直接上代码,注释都已写好
longzeqiu
2019/08/14
1.4K0
【Flutter】ListView 列表高级功能 ( ScrollController 上拉加载更多 )
在 FLutter 中 , 所有的列表都支持设置一个 ScrollController 类型的参数 ,
韩曙亮
2023/03/29
2.1K0
【Flutter】ListView 列表高级功能 ( ScrollController 上拉加载更多 )
Android——RecyclerView自定义OnScrollListener实现下拉刷新监听,上拉加载更多功能
针对RecyclerView有很多开源的框架可以直接拿来用,比较有代表性的是BaseRecyclerViewAdapterHelper,功能很强大,具备上拉监听的功能。使用开源的东西固然省时省力,但是前期自定义的Adapter使用较多,不想再更改了,且总使用开源的东西慢慢人都变傻了,这个功能不算复杂,就自己查找相关资料参照实现了。
Winter_world
2020/09/25
3.7K0
【Flutter 专题】21 图解 ListView 下拉刷新与上滑加载(三)
和尚前段时间整理了两种 ListView 的异步加载数据时,下拉刷新与上滑加载更多的方式,每种方式都有自己的优势,网上也有很多大神讲解过 ListView 数据流的种种处理方式,和尚根据实际遇到的情况整理一下尝试的第三种方案。
阿策小和尚
2019/08/12
1.4K0
【Flutter 专题】21 图解 ListView 下拉刷新与上滑加载(三)
Flutter 库:强大的下拉刷新上拉加载框架——EasyRefresh
EasyRefresh 是一个用于 Flutter 应用程序的简单易用的下拉刷新和上拉加载框架。它支持几乎所有的 Flutter 可滚动小部件。它的功能与Android 的 SmartRefreshLayout 非常相似,并吸收了许多第三方库的优点。EasyRefresh 集成了各种样式的页眉和页脚,但没有任何限制,您可以轻松自定义它们。利用Flutter强大的动画功能,即使只是一个简单的控件也可以实现复杂的效果。EasyRefresh的目标是为Flutter创建一个功能强大、稳定和成熟的下拉刷新框架。
訾博ZiBo
2025/01/06
3860
Flutter 库:强大的下拉刷新上拉加载框架——EasyRefresh
OpenHarmony环境下可用的下拉刷新、上拉加载组件【PullToRefresh】
其中List组件需要设置edgeEffect属性为(EdgeEffect.None)
小帅聊鸿蒙
2024/09/18
1650
OpenHarmony环境下可用的下拉刷新、上拉加载组件【PullToRefresh】
笔记28 | 学习一个简单好用的下拉刷新、上拉加载控件
地址 http://blog.csdn.net/xiangyong_1521/article/details/78431139 目录 前言 基本用法 API拓展 显示细节补充和实现 附 ---- 前言
项勇
2018/06/19
6110
Flutter快速开发——列表分页加载封装
在 App 中,列表数据加载是一个很常见的功能,几乎大多数 App 中都存在列表数据的展示,而对于大数据量的列表展示,为提高用户体验、减少服务器压力等,一般采用分页加载列表数据,首次只加载一页数据,当用户向下滑动列表到底部时再触发加载下一页数据。
loongwind
2022/09/27
6.4K4
Flutter快速开发——列表分页加载封装
Flutter ScrollView上拉加载更多关于学习
2018.05.07 更新 上拉加载可以不用Notification,直接用ScrollController,代码如下:
吴老师
2018/09/05
2K0
Flutter ListView 下拉刷新,上拉加载更多
正常项目中使用ListView一定会涉及到分页加载的问题,此时无法避免地需要用到下拉刷新和上拉加载更多的功能。
毛大姑娘
2020/09/10
3.7K0
Flutter ListView 下拉刷新,上拉加载更多
ByRecyclerView:只为改变BRVAH加载更多机制/addHeaderView的问题
ByRecyclerView 是主要是为了解决XRecyclerView和BRVAH其中的问题而产生的RecyclerView开源库。
Jingbin
2020/02/21
1.3K0
【Flutter 专题】图解 ListView 下拉刷新与上拉加载 (二)
和尚上次尝试 ListView 异步加载列表数据时,用了三方库 flutter_refresh,这种方式使用很简单。但列表数据的加载也绝非一种,和尚这次准备用原生尝试一下。因为种种原因,和尚这次的整理距离上次时间很长,还是应该加强自控力。 和尚这次的列表并没有单独处理动画效果,只是对数据的刷新与加载更多进行正常加载进行处理,还需要进一步的学习研究。
阿策小和尚
2019/08/12
1.1K0
【Flutter 专题】图解 ListView 下拉刷新与上拉加载 (二)
Flutter 中的下拉刷新和上拉加载
在Flutter的官方SDK中给我们提供了下拉刷新的组件RefreshIndicator,但是没有提供上拉分页加载更多的组件。不过不用担心,在Flutter的ListView组件中,有一个ScrollController属性,它就是专门用来控制ListView滑动事件,在这里我们可以根据ListView的位置来判断是否滑动到了底部来做加载更多的处理。
拉维
2019/09/05
4.2K0
Flutter-ListView组件下拉刷新+滚动底部加载+缓存封装
Flutter的ListView组件,虽然很好用,但是数据量大的时候,在低配置的机器上会奇卡无比,所以我封装了一个ListView组件,对数据进行截断,并使用 keframe 插件进行流畅性优化,提升低配置设备的用户体验。
老猫-Leo
2023/12/11
7770
微信小程序-上拉加载更多和下拉刷新
超级小的大杯柠檬水
2023/06/20
5220
微信小程序-上拉加载更多和下拉刷新
Flutter中实现下拉刷新与上拉加载更多
其基本的实现方法是在该组件添加onRefresh事件,当用户下拉刷新时会触发该事件,在该事件中可以用调用一个延时任务Future.delayed( ),在延时任务的回调中重新请求数据即可。
越陌度阡
2021/01/13
3.4K0
自定义RecyclerView下拉刷新上拉加载更多
自定义ListView下拉刷新上拉加载更多 自定义RecyclerView下拉刷新上拉加载更多
cMusketeer
2022/10/27
1.1K0
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多
  用vue来实现一个瀑布流效果,加载网络图片,同时有下拉刷新和上拉加载更多功能效果。然后针对这几个效果的实现,捋下思路:
tandaxia
2020/01/16
3.5K1
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多
1、创建刷新控件
 一些控件我定义成全局的是因为下面会用到。setPadding可以设置显示位置,左上右下,上为负数就是隐藏在顶部。我们需要手指下拉去控制他缓慢显示,就用到了OnTouchListener,我们实现OnTouch方法做一些事件的分发处理。
cMusketeer
2022/10/27
5740
1、创建刷新控件
Android几种强大的下拉刷新库
(1)在我刚学android的时候,用的是XListView,在github上搜索有 MarkMjw/PullToRefresh ,根据Maxwin的XListView改造而来,完善下拉刷新上拉加载更多的功能并实现自动刷新以及自动加载等功能, 并增加对ScrollView的支持。 原XListView
再见孙悟空_
2023/02/10
9470
Android几种强大的下拉刷新库
推荐阅读
相关推荐
自定义SwipeRefreshLayout实现ListView上拉加载下拉刷新
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验