瞎扯
昨天写了展开的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
其实就相当于.viewpage的setOffscreenPageLimit();
cacheExtent
假如当前页面是X
cacheExtent 的作用是: 当偏移X.width() + cacheExtent 时销毁X
也就是X轴的宽度+cacheExtent 设置的值.
超过了就会销毁当前页.
所以要想不销毁页面.就把这个cacheExtent设的很大.
目前来看,不是很科学.如果第一种方法行不通,第二种其实也不是很好.
不过也可以看作是自己重新写了一个pageview.
交流群:493180098,这是个很少吹水,交流学习的群.
APP开发维护咨询群 : 492685472 ,承接APP迭代.开发维护.咨询业务,付费快速解决问题.
网友评论