前言
在flutter项目中使用ListView或者PageView等有滚动条组件的时候,切换页面的时候,再切换回来会丢失之前的滑动状态,这个时候就需要需要使用缓存功能
缓存类
import 'package:flutter/material.dart';class KeepAliveWrapper extends StatefulWidget { const KeepAliveWrapper( {Key? key, this.child, this.keepAlive = true}) : super(key: key); final Widget? child; final bool keepAlive; State<KeepAliveWrapper> createState() => _KeepAliveWrapperState();}class _KeepAliveWrapperState extends State<KeepAliveWrapper> with AutomaticKeepAliveClientMixin { Widget build(BuildContext context) { return widget.child!; } bool get wantKeepAlive => widget.keepAlive;}
使用
在需要缓存的组件使用KeepAliveWrapper包裹一下即可
@overrideWidget build(BuildContext context) {return KeepAliveWrapper(child: Scaffold(body: Stack(children: [_homePage(), _appBar()],),));}