前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flutter中ScrollView及其子类(ListView等)的下拉刷新

Flutter中ScrollView及其子类(ListView等)的下拉刷新

作者头像
吴老师
发布2018-09-05 11:01:53
2.4K0
发布2018-09-05 11:01:53
举报

先丢一个github的demo代码地址 移动开发发展到现在,下拉刷新是个必不可少的功能了。

Flutter里面的ScrollView及其子view都可以添加下拉刷新功能,只要在view的上层再包裹一层RefreshIndicator,这个下拉刷新是MD风格的。

几个要注意的点(以ListView为例)

  • 如果ListView的内容不足一屏,要设置ListView的physics属性为const AlwaysScrollableScrollPhysics()
  • onRefresh方法是接受一个Future<Null>的参数
  • 通过代码触发下拉 _refreshIndicatorKey.currentState.show();

声明一个key来保存控件

代码语言:javascript
复制
final GlobalKey<RefreshIndicatorState> _refreshIndicatorKey = new GlobalKey<
      RefreshIndicatorState>();
代码语言:javascript
复制
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]),
        ),
      ),
代码语言:javascript
复制
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仓库

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.04.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 几个要注意的点(以ListView为例)
  • 关于学习
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档