flutter中使用缓存

前言

在flutter项目中使用ListView或者PageView等有滚动条组件的时候,切换页面的时候,再切换回来会丢失之前的滑动状态,这个时候就需要需要使用缓存功能

缓存类

dart 复制代码
import 'package:flutter/material.dart';

class KeepAliveWrapper extends StatefulWidget {
 const KeepAliveWrapper(
     {Key? key, @required this.child, this.keepAlive = true})
     : super(key: key);

 final Widget? child;
 final bool keepAlive;

 @override
 State<KeepAliveWrapper> createState() => _KeepAliveWrapperState();
}

class _KeepAliveWrapperState extends State<KeepAliveWrapper>
   with AutomaticKeepAliveClientMixin {
 @override
 Widget build(BuildContext context) {
   return widget.child!;
 }

 @override
 bool get wantKeepAlive => widget.keepAlive;  
}

使用

在需要缓存的组件使用KeepAliveWrapper包裹一下即可

复制代码
@override
  Widget build(BuildContext context) {
    return KeepAliveWrapper(
        child: Scaffold(
      body: Stack(
        children: [_homePage(), _appBar()],
      ),
    ));
  }
相关推荐
钱端工程师几秒前
uniapp封装uni.request请求,实现重复接口请求中断上次请求(防抖)
前端·javascript·uni-app
茶憶1 分钟前
uni-app app移动端实现纵向滑块功能,并伴随自动播放
javascript·vue.js·uni-app·html·scss
茶憶6 分钟前
uniapp移动端实现触摸滑动功能:上下滑动展开收起内容,左右滑动删除列表
前端·javascript·vue.js·uni-app
Ayn慢慢9 分钟前
uni-app PDA焦点录入实现
前端·javascript·uni-app
孙同学_18 分钟前
面试题 16.25. LRU 缓存
leetcode·缓存
鹏仔工作室21 分钟前
vue中实现1小时不操作则退出登录功能
前端·javascript·vue.js
亮子AI27 分钟前
【Nginx】怎样清除 Nginx 的缓存?
运维·nginx·缓存
Zyx200735 分钟前
JavaScript 中的 map、parseInt 与 NaN:一场关于类型转换与函数调用的深度解析
javascript
sophie旭36 分钟前
一个偶现bug引发的onKeyDown 和 onChange之战
前端·javascript·react.js
Zyx200739 分钟前
JavaScript 的面向对象魔法:从原始类型到包装类的底层真相
javascript