首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter-ListView组件下拉刷新+滚动底部加载+缓存封装

FlutterListView组件,虽然很好用,但是数据量大时候,低配置机器上会奇卡无比,所以我封装了一个ListView组件,对数据进行截断,并使用 keframe 插件进行流畅性优化,提升低配置设备用户体验...'; /// 可缓存+下拉刷新+滚动到底部自动加载ListView组件(返回数据定义复杂方便局部刷新) class CacheTableList extends StatefulWidget {...getMoreData为动态加载数据,他与前者只能存在一种模式。 : assert(getMoreData != null || pageCount !...注意高度设定需符合要求 createList: (index) { return FrameSeparateWidget(//使用keframe进行单帧动画优化,提升低配置设备流畅性。...keframe 进行单帧动画优化,提升低配置设备流畅性。

38110

Flutter | 事件循环,Future

这个状态只有两个情况,一种有数据 data,一种错误状态 error。...需要注意一点当状态为 done ,可能会有两种情况,一种 future 成功了,另一种 future 失败了,内部有异常,这个时候就不应该获取 data,而是判断 snap.hasData 来进行判断...需要注意使用完成之后要进行关闭操作,否则就会泄漏资源 并且 flutter 会一直警告, 上面的这种方式只能有一个监听,如果添加多个监听则就会保存,那么如何添加多个监听呢,可以使用广播方式,如下...Stream,并且创建了一个动画 initState ,监听动画和输入事件,动画结束则表示没有答对题,直接重置,并扣分,收到输入事件之后则 计算结果是否真确,然后重置,并且加分 reset 方法中用于生产题目和...x 轴位置以及动画执行时间,最后开启动画 build 其实是很简单使用了 AnimatedBuilder 来监听动画,当动画值改变后则会重新 setState(),内部就是一个小按钮,记录了题目

4.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

Flutter 专题】119 图解简易 ACEFrameAnimated 帧动画

和尚在做 Android 开发时,常常需要 帧动画 来作为作为 loading 动画;而 Flutter 没有直接提供类似于 帧动画 组件,和尚简单尝试一个简单 ACEFrameAnimated...帧动画小组件; 和尚理解动画 其实一系列图片在一段时间内叠加展示,以达到连贯动画效果; ACEFrameAnimated 和尚认为,帧动画最重要两个元素,分别是图片资源和间隔时间...Widget,并通过 Future 延迟加载图片资源,其中需要注意循环加载,注意当前数组下标;其中 initState() 更新图片 _framePicList() 时,需要在 Future.delayed...Tips 和尚在退出页面时出现内存溢出,导致原因有两个,第一个未清除 Widget 资源列表;第二个 Future.delayed 发送消息后,await 导致消息未返回; E/flutter...和尚根据提示使用 setState 时先判断当前 State 是否已绑定在 View ;同时 dispose 清空资源; @override void dispose() { super.dispose

78161

Flutter Shimmer 动画效果

加载时间应用程序改进不可避免。从用户体验 (UX) 角度来看,主要是向您用户展示正在加载。...处理向用户传递信息正在加载一种主流方法不准确加载物质类型形状上显示带有微光动画铬色调。 在在这篇博客,我们将探索 Flutter Shimmer 动画效果。...我们将看到如何实现微光动画效果演示程序,并在您 Flutter 应用程序中使用shimmer包展示加载动画效果。 什么微光动画效果?...它可以很好地被利用,而不是传统 ProgressBar 或 Flutter 结构可访问常见loading。 通常,我们打开应用程序任何时候,我们都会看到具有动画loading。...它显示代码何时成功运行,然后显示内容正在从虚拟数据加载带有持续时间微光动画效果,然后加载完成然后内容将显示设备上。

5.5K20

这一次,解决Flutter Dialog各种痛点!

将之前flutter_smart_dialog,保持api稳定基础上,进行了各种抓头重构,解决了一系列问题 现在,我终于可以说:它现在一个简洁,强大,侵入性极低pub包!...,理解同时也一样要吐槽 系统Dialog,点击事件无法穿透暗色背景 这个坑比问题,我真没辙 思考 上面列举了一些比较常见问题,最严重问题,应该就是loading问题 loading个超高频使用弹窗...上面俩种初始化方式,任选一种即可;然后,就可以完整使用本库所有功能了 我非常推荐第一种初始化方式,因为足够简洁;简洁明了东西用起来,会让人心情愉悦? 极简使用 toast使用?...有一种场景比较蛋筒 我们使用StatefulWidget封装了一个小组件 某个特殊情况,我们需要在这个组件外部,去触发这个组件内部一个方法 对于这种场景,有不少实现方法,但是弄起来可能有点麻烦...:在线体验 哎,人总是不断迷茫前行。。。

1.7K51

Flutter | 通过一个小例子带你认识动画 Animation

首先,我们知道我们APP充斥着各种各样动画,有的用 GIF,有的用 Flare,有的 Lottie...。 而对于 Flutter 原生动画来说,也是非常强大。...动画类型 首先 Flutter 动画分为两类: 1.补间动画(Tween)2.基于物理动画 其中我们常用就是补间动画,补间动画含义,引用「Flutter 中文网」解释: “介于两者之间”简称...其中 vsync 必须使用动画类后面加上 with TickerProviderStateMixin 就ok了。...,所以这里使用 Tween evaluate 方法来通过动画计算插值最合适。...总结 Flutter 很多原生控件,都使用了 AnimatedWidget,比如 AnimatedPositioned,看一下它 build 方法: @override Widget build

1.2K30

Flutter 小技巧之优化你使用 BuildContext

Flutter BuildContext 相信大家都不会陌生,虽然它叫 Context,但是它实际 Element 抽象对象,而在 Flutter 里,它主要来自于 ComponentElement...那么到这里我们收获了一个小技巧:使用 BuildContext 时,必须时我们需要通过 mounted 来保证它有效性。...如下代码所示,在这个例子里: 我们添加了一个列表,使用 builder 构建 Item 每个列表都有一个点击事件 点击列表时我们模拟网络请求,假设网络也不是很好,所以延迟个 5 秒 之后我们滑动列表让点击...那我能在 initState 里提前调用?...最后,今天主要分享了使用 BuildContext 时一些注意事项和技巧,如果你对于这方面还有什么疑问,欢迎留言评论。

1.2K00

Flutter实现下拉刷新与上拉加载更多

下拉刷新 Flutter中提供了组件 RefreshIndicator用于下拉刷新。...其基本实现方法该组件添加onRefresh事件,当用户下拉刷新时会触发该事件,该事件可以用调用一个延时任务Future.delayed( ),延时任务回调重新请求数据即可。 2....上拉加载更多 Flutter主要通过使用 ListView.builder( ) 添加控制器来实现上拉加载更多。...其基本实现方法该组件里添加控制器,组件初始化时实例化ScrollController类型控制器,然后初始化initState( ),给控制器添加addListener( )监听事件,事件回调函数可以获得滚动下拉距离及整个页面的高度..._onRefresh ) ) ); } } 以下下拉刷新实现效果: ? 以下上拉加载实现效果: ?

3K10

Flutter ListView 下拉刷新,上拉加载更多

此标记始终列表数据末尾,判断列表滑动是否到达尾部标记。...( //将数据插入到倒数第二个item位置,因为最后一个结束标记。...当监测到最后一条数据,又满足100条数据以下,显示loading动画布局,并去网络获取数据,获取到数据之后插入到结束标记之前。超过100条数据,显示没有更多了。 3.2....注意:有些朋友使用generateWordPairs()时候可能会遇到找不到该方法问题(我就遇到了)。事实上这是一个自动生成英文单词第三方库。...具导入方法体Flutter系列文章Flutter问题:import 'package:english_words/english_words.dart'失败》一文中有详细步骤。

3.1K20

Flutter 专题】21 图解 ListView 下拉刷新与上滑加载(三)

RefreshIndicator 下拉刷新 Flutter 提供了自带刷新效果 RefreshIndicator,这也是网上大神们用最多 Widget 之一,使用方式也很简单,RefreshIndicator...中提供了一个刷新回调入口 onRefresh,仅需该回调接口中处理数据请求即可,如下: // 刷新时数据请求 Future _loadRefresh() async { await...至此,列表下拉刷新与上滑加载更多就基本完成了;接下来需要将两种合并使用,也很简单,如下: body: new Padding( padding: EdgeInsets.all(2.0), child...小优化 优化一:【上滑加载更多】添加动画效果 添加一个加载更多布局 Widget; itemCount 中将 item 个数 +1; 添加监听判断,当滑到最后一个 item 时展示加载更多到布局...优化二:第一次初始化加载数据时添加 loading 动画 RefreshIndicator 自带刷新动画,所以和尚只是第一次加载数据时添加一个 loading 动画,和尚只是填了一个小小状态判断

1.2K41

Flutter 假异步实现示例

(10573): Futrue Future 链式调用 Future 也支持链式调用 API 使用上也是很灵活,提供了下面的选择给大家 .then – Future 执行完后执行,相当于一个...这样链式写法不就是标准去 callback 回调地狱方式嘛 async/await 关键字 async/await 这组关键字系统提供一种实现 异步 任务 API, async/await...底层还是用 Futrue 实现,从使用上看是对 Futrue 简化,本质上还是基于 消息队列 实现异步, 假异步 ,和 Isoalte 不一样 async/await 特点就是: 成对出现...async – 修饰方法,用 async 声明方法都是耗时 await – 调用 async 方法时使用,也可以 async 方法内部适用,await 表示阻塞,下面的任务必须等 await...I/flutter ( 5733): main3... await 阻塞真的阻塞 CPU 了,所以 async/await 不是协程,但是大家注意啊, await 结速阻塞之后执行 click2

1.3K31

Flutter异步编程

深刻理解 futures 机制,才能在复杂业务场景或者构建基础架构时游刃有余,立于不败之地。 下面正确输出,符合你预期?如果不符合的话,哪里理解不对呢? ?...因为 future1 已经 completed 了,所以 future1 7这个位置再次用 then 注册 callback 回调会被放在 microtask 执行。...无论在做基础架构设计还是业务设计,常常会需要自定义 Future。我们如何自定义 Future,其实可以参考源码写法。 关键字 Completer!...Completer一种可以生成以value或者error为结果Future对象一种方式。...Promise使用 resolve 和 reject 来执行成功或者异常,data 或者 error then 注册回调里面被使用。 自定义 Future 如下: ?

82040

Flutter之事件节流、防抖封装

本文将介绍 Flutter 开发如何实现节流和防抖统一封装。 前言 首先我们来了解一下节流和防抖定义,以及什么场景下需要用到节流和防抖。...enable 变量控制,这样就会导致事件 1 执行过程事件 2 会被忽略,这显然不是我们想要效果。...举一个典型场景, Flutter 跳转新页面并获取页面的返回值,此时实现如下: Future toNewPage() async{ var result = await Navigator.pushNamed...try-catch-finally , finally 中将 enable 设置为 true, catch 不对异常做任何处理,使用 rethrow 将异常重新抛出去即可,这样就解决了问题二。...(const Duration(seconds: 1)); }); 使用一种方式时没有问题,但是第二种发现就有问题,节流不起作用了,为什么呢?

1.8K40

Flutter - 利用贝塞尔曲线实现添加购物车效果

实现之前 实现之前,我们还是先来理清一下思路,首先能肯定我们使用二阶贝塞尔曲线来实现「抛物线效果」。...终点坐标很好说,给定一个 GlobalKey,然后 第一帧回调 获取位置即可: @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback...因为起点 ListView ,还会滚动,这时候可能很多小朋友就会说:“每一个 icon 都给一个 GlobalKey 不就好了嘛!” 小朋友,你确定不是作死? ?...注意:GlobalKey 是非常昂贵,需要谨慎使用。 - Vadaski - Flutter | 深入浅出Key[3] 如果这个时候有 10000 个商品列表,岂不是要爆炸?...(); } 这样动画开始以后,就可以获取每一帧小红点位置了。

2.9K20

Flutter&Flame 游戏 - 陆】暴击 Dash | 文字构件使用

| 文字构件使用Flutter&Flame 游戏 - 柒】人随指动 | 动画点触与移动 【Flutter&Flame游戏 - 捌】装弹完毕 | 角色武器发射 【Flutter&Flame游戏...提供了一个 TextPaint 类进行使用。 image.png ---- 如下 Liveable 处理,只需要创建一个 TextComponent 对象,然后使用 add 方法添加即可。...伤害数据 Liveable 维护,虽然可以直接在 Liveable 添加文字。但这样的话会使得 Liveable 职能过于复杂,也不利于后续拓展。...暴击伤害 这里来模拟一下产生暴击情况:如下图所示,伤害时有一定概率产生暴击,此时使用一种文字样式。...实现也比较简单, addDamage ,传入 isCrit 入参,区分是否暴击。如果暴击,使用 _addCritDamage 进行处理,添加黄色伤害和暴击字样即可。

40710

Flutter延时任务、Flutter通过Future与Timer实现延时任务

系列文章 本文异步编程延时策略篇章,Flutter实现延时操作有两种方式,一种通过Future,另一种通过Timer。...*** 1 Future Flutter实现延时 1秒操作,使用Fluture来实现,代码如下: ///代码清单 1-1 ///方式一 ///参数一 延时时间...,这三种方式 小编实现延时操作一些思路,一般建议使用代码清单1-1所示一种,对于代码清单1-2与1-3所示whenComplete与then函数,功能更强大,应当用到合适位置。...1-5使用到了catchError函数,在这里,当then这几个函数任何一个处理出现 异常,都会回调此方法,如这里函数二通过 throw抛出一个异常,catchError函数捕捉到这个异常...Timer来实现实际开发,如果只是一个单纯延时操作,小编建议使用Timer,如下代码清单2-2所示,在当前Widget销毁时取消延时任务,可避免内存泄漏。

2.7K11

Flutter路由插件-r_router(全面适配Navigator2.0)

1.简介 开发Flutter开发过程,路由跳转页面十分常见,市面上也有许许多多路由插件包,例如fluro、ff_annotation_route、routermaster等等,但在个人使用上面...Navigator1.0 (一般不适配网页情况下使用) return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch...Demo Home Page'), ); 使用Navigator2.0(墙裂推荐使用) return MaterialApp.router( title: 'Flutter Demo', theme...,Flutter web限制需要可Json化) RRouter.navigateTo('/two', body: {'param': '我参数(支持实体类,实体需可JSON化)'}); 3.传路径参数和查询参数...RRouter.navigateTo('/ten'); print(result); // = 123 5.获取传值 注册路由时,我们可以看到,每次都会有一个ctx,这个就是上一个路由跳转时候传递过来信息

91010
领券