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()],
      ),
    ));
  }
相关推荐
手握风云-8 分钟前
Redis:不只是缓存那么简单(十一)
redis·缓存
user2975258761212 分钟前
使用SSE实现流式渲染实践
前端·javascript
Web极客码30 分钟前
Python Deque:构建实时滑动窗口与高性能缓存的“隐藏高手”
java·python·缓存
June`32 分钟前
多线程redis项目基石
数据库·redis·缓存
铁皮饭盒34 分钟前
震惊, Bun突发新版, 重写核心, 换掉了底层Zig
前端·javascript·后端
恋猫de小郭1 小时前
Android Studio 放着没怎么用,怎么也会越来越卡?
android·前端·flutter
fanzhonghong1 小时前
javaWeb开发之前端实战(Vue工程化+ElementPlus)
前端·javascript·vue.js·后端·spring
openKaka_1 小时前
completeWork:真实 DOM 是在哪里被创建的
前端·javascript·react.js
bbq粉刷匠1 小时前
了解HTML、CSS与JavaScript
javascript·css·html
橙淮1 小时前
jQuery性能优化终极指南
javascript·jquery