前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flutter ScrollView上拉加载更多关于学习

Flutter ScrollView上拉加载更多关于学习

作者头像
吴老师
发布于 2018-09-05 02:59:10
发布于 2018-09-05 02:59:10
2K00
代码可运行
举报
运行总次数:0
代码可运行

2018.05.07 更新

上拉加载可以不用Notification,直接用ScrollController,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
_scrollController.addListener(() {
      if (_scrollController.position.pixels ==
              _scrollController.position.maxScrollExtent &&
          !this.isRefreshing &&
          !this.isNoMoreData) {
        // 滑动到最底部了
        _getData();
      }
    });

以下是原文:

前面讲了 下拉刷新,列表离不开的还有一个上拉加载更多,今天就来讲一下上拉加载更多在flutter里面如何实现。

在Flutter的github issuses里面,也有人提到了这个问题,但是官网上并没有一个很好的教程指引。

思路是得到滑动的偏移量,跟ListView总的高度进行比对。那么得得到滑动的偏移量和ListView的总高度这两个值,在源码里面找了很久后,发现根本得不到ListView的内容高度。只能自己计算。但是发现了另一个数据。ScrollController里面有一个mostRecentlyUpdatePosition,这个对象的maxScrollExtent是可以滑动的最大距离,当滑动到底部的时候,maxScrollExtent跟ScrollController的offset是相等的。可以用这个比较来判断是否滑动到底部。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
body: new NotificationListener(
        onNotification: _onNotification,
        child: new RefreshIndicator(
          key: _refreshIndicatorKey,
          onRefresh: _refreshData,
          child: new ListView.builder(
            controller: _scrollController,
            physics: const AlwaysScrollableScrollPhysics(),
            itemCount: this.list.length + 1,
            itemBuilder: (_, int index) => _createItem(context, index),
          ),
        ),
      ),

主要的判断代码就是在这个ScrollNotification的回调方法里面了,看一下下面的代码应该就明白了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bool _onNotification(ScrollNotification notification) {
    if (notification is ScrollUpdateNotification) {
      // 当没去到底部的时候,maxScrollExtent和offset会相等,可以准确的判断到达底部还有多少距离时开始加载数据了。。
      if (_scrollController.mostRecentlyUpdatedPosition.maxScrollExtent >
              _scrollController.offset &&
          _scrollController.mostRecentlyUpdatedPosition.maxScrollExtent -
                  _scrollController.offset <=
              50) {

        // 要加载更多
        if (this.isMore && this.loadMoreStatus != LoadMoreStatus.loading) {
          // 有下一页
          print('load more');
          this.loadMoreStatus = LoadMoreStatus.loading;
          _loadMoreData();
          setState(() {});

        } else {}
      }
    }
    return true;
  }

关于学习

flutter的学习文章都整理在这个github仓库

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Flutter】ListView 列表高级功能 ( ScrollController 上拉加载更多 )
在 FLutter 中 , 所有的列表都支持设置一个 ScrollController 类型的参数 ,
韩曙亮
2023/03/29
2.2K0
【Flutter】ListView 列表高级功能 ( ScrollController 上拉加载更多 )
Flutter 实战:撸半个知乎日报~HomePage
https://github.com/zhujian1989/ZhihuDailyPurifyByFlutter
蜻蜓队长
2018/08/03
5790
Flutter 实战:撸半个知乎日报~HomePage
微信小程序实现上拉加载更多
微信小程序当页面滑到底部,如何上拉加载更多数据,我们需要用onReachBottom方法实现,当滑动到底部,页码+1请求服务器,并设置数据。
Petrochor
2022/06/07
2.7K0
Flutter中使用flutter_html解析html文件
参考:https://pub.flutter-io.cn/packages/flutter_html
越陌度阡
2021/01/13
6.4K0
【Flutter 专题】图解 ListView 下拉刷新与上拉加载 (二)
和尚上次尝试 ListView 异步加载列表数据时,用了三方库 flutter_refresh,这种方式使用很简单。但列表数据的加载也绝非一种,和尚这次准备用原生尝试一下。因为种种原因,和尚这次的整理距离上次时间很长,还是应该加强自控力。 和尚这次的列表并没有单独处理动画效果,只是对数据的刷新与加载更多进行正常加载进行处理,还需要进一步的学习研究。
阿策小和尚
2019/08/12
1.1K0
【Flutter 专题】图解 ListView 下拉刷新与上拉加载 (二)
【Flutter 专题】21 图解 ListView 下拉刷新与上滑加载(三)
和尚前段时间整理了两种 ListView 的异步加载数据时,下拉刷新与上滑加载更多的方式,每种方式都有自己的优势,网上也有很多大神讲解过 ListView 数据流的种种处理方式,和尚根据实际遇到的情况整理一下尝试的第三种方案。
阿策小和尚
2019/08/12
1.4K0
【Flutter 专题】21 图解 ListView 下拉刷新与上滑加载(三)
Flutter中实现下拉刷新与上拉加载更多
其基本的实现方法是在该组件添加onRefresh事件,当用户下拉刷新时会触发该事件,在该事件中可以用调用一个延时任务Future.delayed( ),在延时任务的回调中重新请求数据即可。
越陌度阡
2021/01/13
3.6K0
flutter组件5【上滑加载】
pixels 获取当前位置的像素值,maxScrollExtent 获得 SrollController 监听控件可以滚动的最大范围
sinnoo
2020/11/13
1.1K0
ListView下拉刷新与加载更多
在前面的文章中我们看了进度组件ProgressIndicator的用法,怎么样大家Get了吗? 那么我们今天就来看下ProgressIndicator的应用,一起来看下Flutter中的下拉刷新与加载更多是如何实现的。
flyou
2019/08/06
2.7K0
ListView下拉刷新与加载更多
Flutter ListView 下拉刷新,上拉加载更多
正常项目中使用ListView一定会涉及到分页加载的问题,此时无法避免地需要用到下拉刷新和上拉加载更多的功能。
毛大姑娘
2020/09/10
3.9K0
Flutter ListView 下拉刷新,上拉加载更多
鸿蒙Next仓颉语言开发实战教程:下拉刷新和上拉加载更多
在移动应用中,各种列表页面离不开下拉刷新和上拉加载更多,我们的商城应用也是如此。今天介绍一下在仓颉开发语言中如何实现这一功能。
幽蓝计划
2025/06/10
630
实现 iOS 无感知上拉加载更多
什么是无感知,这个这样理解:在网络情况正常的情况下,用户对列表进行连续的上拉时,该列表可以无卡顿不停出现新的数据。
网罗开发
2021/08/13
2.6K0
Flutter 中的下拉刷新和上拉加载
在Flutter的官方SDK中给我们提供了下拉刷新的组件RefreshIndicator,但是没有提供上拉分页加载更多的组件。不过不用担心,在Flutter的ListView组件中,有一个ScrollController属性,它就是专门用来控制ListView滑动事件,在这里我们可以根据ListView的位置来判断是否滑动到了底部来做加载更多的处理。
拉维
2019/09/05
4.3K0
Flutter 双向聊天列表效果进阶优化
聊天列表是一个很扣细节的场景,在之前的 《Flutter 实现完美的双向聊天列表效果,滑动列表的知识点》 里,通过 CustomScrollView 和配置它的 center 从而解决了数据更新时的列表跳动问题,但是这时候又有网友提出了新的问题:
GSYTech
2022/03/29
7101
Flutter  双向聊天列表效果进阶优化
Android利用V4包中的SwipeRefreshLayout实现上拉加载
基本原理 上拉加载或者说滚动到底部时自动加载,都是通过判断是否滚动到了ListView或者其他View的底部,然后触发相应的操作,这里我们以 ListView来说明。因此我们需要在监听ListView的滚动事件,当ListView滚动到底部时自动触发加载操作;但是当用户支持手指滑动屏 幕,没有滚动时,我们也需要让它加载,因此这种情形就是上拉加载更多。所以我们需要在触摸事件里面进行判断,如果到了底部,且用户是上拉操作,那么执行加 载更多。 时间有限,直接上代码吧。 实现代码 /** * 继承自SwipeRe
庞小明
2018/03/07
8740
Android利用V4包中的SwipeRefreshLayout实现上拉加载
Flutter完整开发实战详解(二、 快速开发实战篇)
 作为系列文章的第二篇,继《Flutter完整开发实战详解(一、Dart语言和Flutter基础)》之后,本篇将为你着重展示:如何搭建一个通用的Flutter App 常用功能脚手架,快速开发一个完整的 Flutter 应用。
GSYTech
2018/08/11
5.2K0
Flutter完整开发实战详解(二、 快速开发实战篇)
flutter的列表组件
在flutter中如果要渲染动态列表,一般我们使用ListView.separated,也就是组件ListView的别名构造函数separated,这个构造函数需要传递三个必须参数:itemBuilder、separatorBuilder、itemCount.
挥刀北上
2021/01/07
1K0
flutter的列表组件
[- Flutter 基础篇 -] ListView的使用
1.ListView 的基本使用 ListView 是一个盛放多个孩子的容器。我们从下面的例子开始介入: 1.1:三个构造 使用ListView构造方法 和Flex,Wrap类似,将子元素一个
张风捷特烈
2020/04/30
1.2K0
[- Flutter 基础篇 -] ListView的使用
vue上拉加载更多组件
我想,工作一段时间的都碰见过上拉加载更多需求,现在这种插件也蛮多的,也很多是把上拉加载下拉刷新结合。但是这些组件都有一个问题,就是下拉到最底部,刷新浏览器,浏览器会记住这个距离,从而触发上拉加载的方法。虽然这个小问题在正常情况下没什么影响,于是自己就研究研究,写了一个上拉加载更多的组件。
wade
2020/04/24
2.3K0
Flutter 实现简单聊天界面 下拉滑动加载更多
将刷新组件嵌入滑动组件中,因为聊天界面都是由下往上滑,所以ListView设置了reverse: true实现反转列表组件。组件itemCount的值设置消息数组长度+1,因为设置了reverse,所以需要将刷新加载组件放到当index == 消息长度的位置。
用户4458175
2020/06/18
3.7K0
相关推荐
【Flutter】ListView 列表高级功能 ( ScrollController 上拉加载更多 )
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档