Flutter快速缓存管理插件quick_cache_flutter的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

Flutter快速缓存管理插件quick_cache_flutter的使用

🚀 Quick Cache Flutter

通过一行代码安全地管理缓存,同时不牺牲性能。

功能特性

  • 快速:底层使用[Hive],确保高性能。
  • 🔒 安全:加密所有存储的数据。
  • ⏲️ 过期时间:可以为每个键设置失效时间。
  • 😉 易于使用:单行代码实现readwrite操作。

入门指南

runApp(Widget)之前初始化QuickCacheFlutter(在WidgetsFlutterBinding.ensureInitialized()之后调用):

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await QuickCacheFlutter.instance.init();
  runApp(const MyApp());
}

使用方法

  • 📖 QuickCacheFlutter.instance.readCache:读取给定键的值。
  • ✍️ QuickCacheFlutter.instance.setCache:在数据库中保存单个键值对。
  • 🧹 QuickCacheFlutter.instance.removeAllCache:清除数据库中的所有缓存。
  • 🗑️ QuickCacheFlutter.instance.deleteValue:删除单个值。

如果未提供expiryDuration或将其设置为null,则该值将一直存在,直到应用程序生命周期结束或手动删除。

QuickCacheFlutter.instance.setCache(
  key: 'key',
  value: value,
  expiryDuration: const Duration(seconds: 20),
);

完整示例Demo

以下是一个完整的示例代码,展示了如何在Flutter应用中使用quick_cache_flutter插件进行缓存管理。

import 'package:flutter/material.dart';
import 'package:quick_cache_flutter/quick_cache_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await QuickCacheFlutter.instance.init();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  TextEditingController textEditingController = TextEditingController();
  ValueNotifier<dynamic> cachedString = ValueNotifier('');

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          // 输入框
          TextField(
            controller: textEditingController,
            decoration: InputDecoration(
              labelText: '输入要缓存的文本',
              border: OutlineInputBorder(),
            ),
          ),
          SizedBox(height: 20),

          // 添加缓存按钮
          ElevatedButton(
            onPressed: () async {
              // 将输入的文本缓存,设置20秒过期时间
              await QuickCacheFlutter.instance.setCache(
                key: 'testDuration',
                value: textEditingController.text,
                expiryDuration: const Duration(seconds: 20),
              );
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(content: Text('缓存已添加')),
              );
            },
            child: const Text('添加缓存'),
          ),
          SizedBox(height: 20),

          // 获取缓存按钮
          ElevatedButton(
            onPressed: () async {
              // 读取缓存
              var value = await QuickCacheFlutter.instance.readCache(key: 'testDuration');
              cachedString.value = value ?? '无缓存数据';
            },
            child: const Text('获取缓存'),
          ),
          SizedBox(height: 20),

          // 显示缓存内容
          ValueListenableBuilder(
            valueListenable: cachedString,
            builder: (context, value, child) {
              return Text(
                '缓存内容: $value',
                style: TextStyle(fontSize: 18),
              );
            },
          ),
        ],
      ),
    );
  }
}

更多关于Flutter快速缓存管理插件quick_cache_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter快速缓存管理插件quick_cache_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用quick_cache_flutter插件来进行快速缓存管理的代码示例。quick_cache_flutter插件可以帮助你轻松地管理应用的缓存数据。

首先,你需要在pubspec.yaml文件中添加quick_cache_flutter依赖:

dependencies:
  flutter:
    sdk: flutter
  quick_cache_flutter: ^最新版本号  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

安装完成后,你可以按照以下步骤使用quick_cache_flutter

1. 初始化缓存管理

在你的应用入口文件(通常是main.dart)中,你可以初始化缓存管理。

import 'package:flutter/material.dart';
import 'package:quick_cache_flutter/quick_cache_flutter.dart';

void main() {
  // 初始化QuickCache
  QuickCache.init(
    storagePath: 'path/to/cache',  // 可选,指定缓存存储路径
    encryptionKey: 'your-encryption-key',  // 可选,用于加密缓存数据
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

2. 缓存数据的存储和读取

在你的页面或组件中,你可以使用QuickCache来存储和读取数据。

import 'package:flutter/material.dart';
import 'package:quick_cache_flutter/quick_cache_flutter.dart';

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String? cachedData;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('QuickCache Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Cached Data: $cachedData',
              style: TextStyle(fontSize: 18),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                // 存储数据到缓存
                await QuickCache.setString('myKey', 'Hello, Flutter!');
                
                // 从缓存中读取数据
                String? data = await QuickCache.getString('myKey');
                setState(() {
                  cachedData = data;
                });
              },
              child: Text('Store and Retrieve Data'),
            ),
          ],
        ),
      ),
    );
  }
}

3. 删除缓存数据

你也可以删除特定的缓存数据或清空所有缓存。

ElevatedButton(
  onPressed: () async {
    // 删除特定的缓存数据
    await QuickCache.delete('myKey');
    
    // 清空所有缓存数据
    // await QuickCache.clearAll();
    
    // 更新UI
    setState(() {
      cachedData = null;
    });
  },
  child: Text('Delete Cached Data'),
),

完整示例

将上述代码整合到一个完整的示例中:

import 'package:flutter/material.dart';
import 'package:quick_cache_flutter/quick_cache_flutter.dart';

void main() {
  QuickCache.init(
    storagePath: 'path/to/cache',
    encryptionKey: 'your-encryption-key',
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String? cachedData;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('QuickCache Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Cached Data: $cachedData',
              style: TextStyle(fontSize: 18),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                await QuickCache.setString('myKey', 'Hello, Flutter!');
                String? data = await QuickCache.getString('myKey');
                setState(() {
                  cachedData = data;
                });
              },
              child: Text('Store and Retrieve Data'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                await QuickCache.delete('myKey');
                setState(() {
                  cachedData = null;
                });
              },
              child: Text('Delete Cached Data'),
            ),
          ],
        ),
      ),
    );
  }
}

这样,你就可以在你的Flutter应用中使用quick_cache_flutter插件来管理缓存数据了。希望这个示例对你有帮助!

回到顶部