
正文
包含flutter_swiper不要刷新的词条
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
flutter刷新页面的方法
这种方法最常见,但是有些地方引用的话,刷新的成本比较大,刷新的是整个页面,数据太多加载太慢的话,会有闪烁的现象
这种方法类似于iOS中的set方法,通过设置某个属性的时候,去刷新某个控件。在flutter中这种刷新方式,是对上面setState(){}方法的改进,根本的方法还是setState(){},只不过是通过方法去刷新某个控件。如下:
首先在pubspec.yaml中添加provider依赖
下面通过provider来实现一个发送验证码的案例。
创建一个TimerModel文件
页面布局如下:
相关问答
Q1: Flutter 全局List Widget 不刷新问题
我是在StatefulWidget里面设置了一个全局的List,然后动态改变List里面的内容,然后使用setState刷新,结果发现没有用,点击一下虽然会多出一个新的Item,但是还是原来那个,就是List长度、内容不同,Widget显示的是同一个Widget。
比如:九宫格添加图片,第一个是添加图片,点击添加图片把图片放到List里面,然后setState刷新,结果发现页面没变化,触碰添加图片Item,就会多出一个添加图片Item。
根据Flutter基于不可变数据的原理,我们直接把List换一个引用,创建一个新的List。
Q2: Flutter PageView组件怎样让子组件不会重复加载
在做一个美女相册flutter demo app的时候发现,每次切换页面的时候,里面的子页面(GridView widget)每次都会重新加载,就像下面这样:
这样的体验肯定不行。经过一番调研后发现竟然还需要做蛮多事情的。
先看看目前的实现:
这个就是包含在PageView里面的子组件,很简单,通过FutureBuilder调一个接口返回数据后build一个GridView。很显然每次切换Tab的时候,应该是每次都进入了_BeautyListWidgetState的build方法,导致每次都会重新刷新。那要怎样才能做到加载后切换不再刷新呢?
需要实现 wantKeepAlive 方法(返回true),另外在build方法最前面需要 调用 super.build(context); ,如下:
所以你需要在initState方法中创建这个Future。如下:
好了。效果实现了。不过稍后还需要看看AutomaticKeepAliveClientMixin源码,看看它是如何做到的。
Reference:
flutter_swiper不要刷新的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、flutter_swiper不要刷新的信息别忘了在本站进行查找喔。







