17.请求数据保留

前言

前文中可以发现一个问题,每次切换页面,都会重新请求数据。而实际开发中,我们会对数据进行保留,在需要的时候再进行数据更新。

1

Mixin

调整继承关系

多继承 AutomaticKeepAliveClientMixin

重写 wantKeepAlive

调整 build 方法

调整 MyHomePage (标签Tab页)

原先我们的切换Tab的逻辑是这样的:

并非所有的子页面的 widget 都在标签容器的 widget 树中,导致每次切换都会去重新生成渲染。

  • 我们需要做如下调整:

    • 构建 PageController

    • 调整 BodyPageView, 并绑定 PageControllerpages

    • 通过 PageController 切换子页面

检查效果

1

PageView

滑动切换子页面

2

在使用总突然发现可以通过滑动切换 PageView 的子页面。但是底部的标签选中没有变化,下面我们来处理一下。

同步标签切换

通过 onPageChanged 来监听页面的切换,同步修改选中标签。

关闭滑动切换

当然,不需要滑动的话可以通过 physics 来进行关闭。

Last updated

Was this helpful?