Getx PageView 保持页面状态


前言

在使用Get作为状态管理工具时,我的页面继承了GetView,在做首页时需要多个页面,但是继承了GetView的页面不能再继承AutomaticKeepAliveClientMixin,这就导致切换页面会会刷新.
我也不想将GetView改成StatefulWidget,本篇文章是我找到的解决方案
在这里插入图片描述


一、定义一个KeepAliveWrapper组件

class FhKeepAliveWrapper extends StatefulWidget {
  final Widget child;

  const FhKeepAliveWrapper({Key? key, required this.child}) : super(key: key);

  
  State<FhKeepAliveWrapper> createState() => _FhKeepAliveWrapperState();
}

class _FhKeepAliveWrapperState extends State<FhKeepAliveWrapper>
    with AutomaticKeepAliveClientMixin {
  
  Widget build(BuildContext context) {
    return widget.child;
  }

  
  // TODO: implement wantKeepAlive
  bool get wantKeepAlive => true;
}

这里就是一个很简单的StatefulWidget,它with 了AutomaticKeepAliveClientMixin,然后接收一个child 参数

二、使用步骤

PageView(
        controller: controller.pageController,
        children: const [
          FhKeepAliveWrapper(child: HomePage()),
          FhKeepAliveWrapper(child: StorePage()),
          FhKeepAliveWrapper(child: CustomerPage()),
          FhKeepAliveWrapper(child: MessagePage()),
          FhKeepAliveWrapper(child: MyPage()),
        ],
      ),

在使用的时候,直接将页面传入FhKeepAliveWrapper 组件即可


总结

最近已经很少写文章了,希望篇文章可以帮到需要的人,喜欢就收藏起来吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半身风雪

感谢打赏,你的鼓励,是我创作的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值