Flutter中ScrollView及其子类(ListView等)的下拉刷新
时间:2022-06-09
本文章向大家介绍Flutter中ScrollView及其子类(ListView等)的下拉刷新,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
先丢一个github的demo代码地址 移动开发发展到现在,下拉刷新是个必不可少的功能了。
Flutter里面的ScrollView及其子view都可以添加下拉刷新功能,只要在view的上层再包裹一层RefreshIndicator,这个下拉刷新是MD风格的。
几个要注意的点(以ListView为例)
- 如果ListView的内容不足一屏,要设置ListView的physics属性为const AlwaysScrollableScrollPhysics()
- onRefresh方法是接受一个Future<Null>的参数
- 通过代码触发下拉
_refreshIndicatorKey.currentState.show();
声明一个key来保存控件
final GlobalKey<RefreshIndicatorState> _refreshIndicatorKey = new GlobalKey<
RefreshIndicatorState>();
body: new RefreshIndicator(
key: _refreshIndicatorKey,
onRefresh: _getData, // onRefresh 参数是一个 Future<Null> 的回调
child: new ListView.builder(
// 这句是在list里面的内容不足一屏时,list可能会滑不动,加上就一直都可以滑动
physics: const AlwaysScrollableScrollPhysics(),
itemCount: this.list.length,
itemBuilder: (_, int index) => _createItem(list[index]),
),
),
Future<Null> _getData() {
final Completer<Null> completer = new Completer<Null>();
// 启动一下 [Timer] 在3秒后,在list里面添加一条数据,关完成这个刷新
new Timer(Duration(seconds: 3), () {
// 添加数据,更新界面
setState(() {
list.add("新加数据${list.length}");
});
// 完成刷新
completer.complete(null);
});
return completer.future;
}
关于学习
flutter的学习文章都整理在这个github仓库里
- [喵咪开源软件推荐(5)]开源DNS服务-bind
- 详解Python的is操作符
- [喵咪BELK实战(2)] elasticsearch+kibana搭建
- 【第二期】一次学透java.io
- [喵咪BELK实战(1)]浅谈日志的重要性以及介绍BELK
- Unicode编解码函数
- 适配器模式
- [PhalApi实战篇(1)]Redis队列处理异步任务
- 修饰者模式
- PhalApi-RabbitMQ基于PhalApi专业队列拓展
- Python的三个问题
- [喵咪开源软件推荐(4)]Liunx跑分神器-unixbench
- 正则化贪心森林(RGF)的入门简介,含案例研究
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 路由(二)之分库分表路由
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法