Flutter PageView组件怎样让子组件不会重复加载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter PageView组件怎样让子组件不会重复加载相关的知识,希望对你有一定的参考价值。

参考技术A 在做一个美女相册flutter demo app的时候发现,每次切换页面的时候,里面的子页面(GridView widget)每次都会重新加载,就像下面这样:

这样的体验肯定不行。经过一番调研后发现竟然还需要做蛮多事情的。

先看看目前的实现:

这个就是包含在PageView里面的子组件,很简单,通过FutureBuilder调一个接口返回数据后build一个GridView。很显然每次切换Tab的时候,应该是每次都进入了_BeautyListWidgetState的build方法,导致每次都会重新刷新。那要怎样才能做到加载后切换不再刷新呢?

需要实现 wantKeepAlive 方法(返回true),另外在build方法最前面需要 调用 super.build(context); ,如下:

所以你需要在initState方法中创建这个Future。如下:

好了。效果实现了。不过稍后还需要看看AutomaticKeepAliveClientMixin源码,看看它是如何做到的。

Reference: https://stackoverflow.com/questions/51224420/flutter-switching-to-tab-reloads-widgets-and-runs-futurebuilder

以上是关于Flutter PageView组件怎样让子组件不会重复加载的主要内容,如果未能解决你的问题,请参考以下文章

Flutter控件——布局控件:约束限制子组件大小的组件

Flutter学习日记之PageView+Indicator指示器实现引导页

react父组件传入的属性没有让子组件收到的prop变化

Angular 2如何让子组件等待异步数据准备好

在垂直PageView中包装不同高度的项目 - Flutter

Flutter中动态显示组件之“坑”,我来教你怎样爬上来。