日更(四十四)-flutter-PageView的重绘问题

2019-02-13  本文已影响0人  Jlanglang

瞎扯

昨天写了展开的ExpandIcon,在写的过程中,发现.
pageview每次切换都会重新创建weight.
不会保存状态

这个就有问题了.
实际开发,这是绝对不能容忍的.

解决方法:

方法1 AutomaticKeepAliveClientMixin

class _UserPagerState extends State<UserPager> with AutomaticKeepAliveClientMixin {

然后实现一个方法.

  @override
  bool get wantKeepAlive => true;

默认实现是null,这里可以看到返回参数是bool,改成true就好了.

如果发现这个没用,那么方法2

方法2

将 PageView 的代码拷贝出来, 然后把其中Viewport的属性 cacheExtent 设置成一个比较大的数
PageView 源码中官方写死了cacheExtent: 0.0. 如果将这个赋值删掉, 那么最终会使用默认值250.0,可以缓存一个Widget

image.png image.png

其实就相当于.viewpage的setOffscreenPageLimit();

cacheExtent

假如当前页面是X
cacheExtent 的作用是: 当偏移X.width() + cacheExtent 时销毁X

也就是X轴的宽度+cacheExtent 设置的值.

超过了就会销毁当前页.

所以要想不销毁页面.就把这个cacheExtent设的很大.


目前来看,不是很科学.如果第一种方法行不通,第二种其实也不是很好.
不过也可以看作是自己重新写了一个pageview.


交流群:493180098,这是个很少吹水,交流学习的群.
APP开发维护咨询群 : 492685472 ,承接APP迭代.开发维护.咨询业务,付费快速解决问题.

上一篇 下一篇

猜你喜欢

热点阅读