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仓库

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏TechBox

跟着官方文档学习3D Touch前言(一)app外3D Touch—Home Screen Quick Actions(二)app内的3D Touch - Peek and Pop名词解释

26140
来自专栏LinXunFeng的专栏

RxSwift + MJRefresh 打造自动处理刷新控件状态

24830
来自专栏Google Dart

为Flutter应用程序添加交互性 顶

你如何修改你的应用程序,使其对用户输入做出反应? 在本教程中,您将为仅包含非交互式小部件的应用添加交互性。 具体来说,您将通过创建一个管理两个无状态小部件的自定...

23220
来自专栏Android先生

Android 9.0适配及部分新特性介绍

在最开始针对速贷进行Android9.0版本的适配时,我使用的是真机是vivo X21A,将targetSdkVersion升到28,运行发现网络请求全报400...

1.4K40
来自专栏Android填坑指南

Android设备屏幕方向的一二事

orientation的取值为: - 横屏:Configuration.ORIENTATION_LANDSCAPE - 竖屏:Configuration.O...

632280
来自专栏施炯的IoT开发专栏

《101 Windows Phone 7 Apps》读书笔记-ALARM CLOCK

课程内容 Ø 隔离存储空间 Ø 设置 Ø 设置页面向导 Ø Toggle Switch控件 Ø 使用自定义字体     Alarm Clock模仿的...

21260
来自专栏王磊的博客

一些好用的开源控件

      工作两年,一直都在做些编码方面的表面功夫,实现了很多很炫的功能,在此写下一些体验。有些比较小的dll文件我会发上来,如果是开源组织的代码我会把地址附...

38860
来自专栏华仔的技术笔记

iOS 性能优化常用技巧总结import

34470
来自专栏何俊林

插件开发之360 DroidPlugin源码分析(四)Activity预注册占坑

在了解系统的activity,service,broadcastReceiver的启动过程后,今天将分析下360 DroidPlugin是如何预注册占坑的?本篇...

20870
来自专栏coding...

Atom插件开发-使用自己的Chevereto图床API项目简介功能分析代码实现项目地址

最近一直在用 Atom 写写markdown,但无奈上传图片真实太麻烦了。找了好几个插件都是要用到 七牛 的账号,由于之前被七牛坑过一次,就没再想用他的打算了。...

11620

扫码关注云+社区

领取腾讯云代金券