博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flutter - RefreshIndicator实现下拉刷新、上拉加载 | 掘金技术征文
阅读量:6939 次
发布时间:2019-06-27

本文共 2195 字,大约阅读时间需要 7 分钟。

思路:flutter中存在progress_indicator.dart这个文件,里面有RefreshIndicator这里类,里面存在这我们需要使用的方法:

我下面将主要解释用这个方法处理上拉加载和下拉刷新;

首先需要定义一个变量:

var curPage = 1;将使用它作为一个标识,用于是首次页面还是加载页面; 每次上拉加载会加1,如curPage++;这个标识也可以用于每次网络的请求(例如: 每次拉取10条;第一次是0-9的数据的10条数据,第二次重新请求10-19的数据)

其次添加ScrollController _controller = new ScrollController(); 这里_controller将用于上拉滑动监听

NewsListpageState() {    _controller.addListener(() {      var maxScroll = _controller.position.maxScrollExtent;      var pixels = _controller.position.pixels;      if (maxScroll == pixels && listData.length < 100){//        上拉刷新做处理        print('load more ...');//        curPage++;        setState(() {          //改变数据,这里随意发挥          listData = List
.generate(100, (i) => "CL $i"); }); } });复制代码

数据由网络请求获取!每人使用的都不一样,不用解释了~

var listData = List<String>.generate(30, (i) => "CL $i");

整体代码如下:

class NewsListpageState extends State
{ // TODO: implement build var curPage = 1; ScrollController _controller = new ScrollController(); var listData = List
.generate(30, (i) => "CL $i"); Future
_pullToRefresh() async {// curPage = 1; //下拉刷新做处理 setState(() { 改变数据,这里随意发挥 listData = List
.generate(30, (i) => "CL $i"); }); return null; } NewsListpageState() { _controller.addListener(() { var maxScroll = _controller.position.maxScrollExtent; var pixels = _controller.position.pixels; if (maxScroll == pixels && listData.length < 100){// 上拉刷新做处理 print('load more ...');// curPage++; setState(() { //改变数据,这里随意发挥 listData = List
.generate(100, (i) => "CL $i"); }); } }); } @override Widget build(BuildContext context) { Widget listView = new ListView.builder( itemCount: listData.length, itemBuilder: (context,i) { //这里填充自己想要的列表UI return new Container( height: 45.0, color: Colors.blue, child: new Text( "$i", style: new TextStyle(fontSize: 15.0), ), ); }, controller: _controller, ); return new RefreshIndicator(child: listView, onRefresh: _pullToRefresh); }}复制代码

转载地址:http://kwsnl.baihongyu.com/

你可能感兴趣的文章
opencart 为品牌管理增加检索名称和状态项
查看>>
友友系统:让云计算更加贴近用户
查看>>
数据中心由“限”转“疏”
查看>>
MYSQL连接Error (1133): Can’t find any matching row in the user table错误的解决办法
查看>>
Appium自动化测试之微信元素识别和代码实战
查看>>
网络管理维护技巧:五招提速杀毒软件效率
查看>>
EF 安装框架
查看>>
Typescript开发nodejs项目+调试
查看>>
tree与GridView交互
查看>>
压缩算法
查看>>
PowerDesigner中批量替换name和code的脚本
查看>>
关于‘暗时间’随笔
查看>>
Javascript 中 检查一个数组是否包含某对象
查看>>
网络基础与配置
查看>>
BZOJ1050旅游
查看>>
HNOI2002营业额统计
查看>>
初步学习thinkphp5.0
查看>>
Linux常用命令(二)--文件目录命令
查看>>
tomcat启动报错
查看>>
java中生成不重复随机的数字
查看>>