Flutter基础缓存功能插件dart_basic_cache的使用

Flutter基础缓存功能插件dart_basic_cache的使用

DartBasicCache

DartBasicCache 是一个简单的缓存包,允许你在 Dart 应用程序中轻松地缓存数据。

安装

pubspec.yaml 文件中添加以下依赖项:

dependencies:
  dart_basic_cache: ^1.0.0

特性

  • 简单易用的缓存包。
  • 基于唯一 URL 缓存和存储数据。
  • 在指定时长后自动使缓存数据失效。
  • 提供快速访问缓存数据,避免重复的网络请求。
  • 支持可选的内存和/或文件存储缓存。
  • 适用于 Flutter 和 Dart 项目。

使用

导入 dart_basic_cache 库:

import 'package:dart_basic_cache/dart_basic_cache.dart';

创建 DartBasicCache 的实例:

var cache = DartBasicCache();

初始化缓存(可选):

await cache.init(cacheFileName: 'my_cache', cacheTimeHour: 2);

这将使用名为 “my_cache” 的文件名和 2 小时的缓存时长来初始化缓存。

缓存数据:

await cache.cacheData('https://api.example.com/data', jsonData);

这将使用指定的 URL 作为唯一标识符来缓存 jsonData。

检索缓存数据:

var data = await cache.getDataFromCache('https://api.example.com/data');
if (data != null) {
  // 使用缓存的数据
} else {
  // 数据未在缓存中找到
}

这将为指定的 URL 检索缓存数据。如果数据可用且未过期,则返回该数据;否则返回 null。

删除缓存数据:

await cache.deleteCachedData('https://api.example.com/data');

这将删除指定 URL 的缓存数据。

示例

这是一个完整的示例,演示如何使用 DartBasicCache 缓存和检索来自 API 的数据:

import 'package:flutter/material.dart';
import 'package:dart_basic_cache/dart_basic_cache.dart';
import 'package:http/http.dart' as http;

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await DartBasicCache().init();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'DartBasicCache 示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final cache = DartBasicCache();
  final apiUrl = 'https://api.example.com/data';
  String? cachedData;

  [@override](/user/override)
  void initState() {
    super.initState();
    fetchData();
  }

  Future<void> fetchData() async {
    setState(() {
      cachedData = null;
    });

    final data = await cache.getDataFromCache(apiUrl);

    if (data != null) {
      setState(() {
        cachedData = data;
      });
    } else {
      final response = await http.get(Uri.parse(apiUrl));

      if (response.statusCode == 200) {
        final fetchedData = response.body;
        await cache.cacheData(apiUrl, fetchedData);
        setState(() {
          cachedData = fetchedData;
        });
      }
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('DartBasicCache 示例'),
      ),
      body: Center(
        child: cachedData != null
            ? Text(
                '缓存数据:\n$cachedData',
                textAlign: TextAlign.center,
              )
            : CircularProgressIndicator(),
      ),
    );
  }
}

更多关于Flutter基础缓存功能插件dart_basic_cache的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter基础缓存功能插件dart_basic_cache的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


dart_basic_cache 是一个简单的 Dart 缓存库,适用于 Flutter 应用程序。它提供了基本的缓存功能,允许你在内存中存储和检索数据。以下是如何在 Flutter 项目中使用 dart_basic_cache 的基本步骤。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  dart_basic_cache: ^1.0.0  # 请确保使用最新版本

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

2. 初始化缓存

在你的 Dart 文件中导入 dart_basic_cache 并初始化缓存:

import 'package:dart_basic_cache/dart_basic_cache.dart';

void main() {
  // 初始化缓存
  var cache = BasicCache();

  // 设置缓存项
  cache.set('key1', 'value1');
  cache.set('key2', 'value2', Duration(seconds: 10)); // 设置10秒后过期

  // 获取缓存项
  var value1 = cache.get('key1');
  print(value1); // 输出: value1

  // 检查缓存项是否存在
  var exists = cache.has('key1');
  print(exists); // 输出: true

  // 删除缓存项
  cache.delete('key1');

  // 清空缓存
  cache.clear();
}

3. 使用缓存

你可以使用 set 方法将数据存储在缓存中,并使用 get 方法检索数据。你还可以为缓存项设置过期时间。

// 设置缓存项
cache.set('key1', 'value1');
cache.set('key2', 'value2', Duration(seconds: 10)); // 设置10秒后过期

// 获取缓存项
var value1 = cache.get('key1');
print(value1); // 输出: value1

// 检查缓存项是否存在
var exists = cache.has('key1');
print(exists); // 输出: true

// 删除缓存项
cache.delete('key1');

// 清空缓存
cache.clear();

4. 处理过期缓存

dart_basic_cache 会自动处理过期的缓存项。当你尝试获取一个过期的缓存项时,它会返回 null 并从缓存中移除该条目。

// 设置一个10秒后过期的缓存项
cache.set('key2', 'value2', Duration(seconds: 10));

// 等待11秒
Future.delayed(Duration(seconds: 11), () {
  var value2 = cache.get('key2');
  print(value2); // 输出: null,因为缓存项已过期
});

5. 使用自定义缓存大小

你还可以指定缓存的最大大小,当缓存达到最大大小时,旧的缓存项将被移除。

// 初始化缓存,设置最大大小为3
var cache = BasicCache(maxSize: 3);

cache.set('key1', 'value1');
cache.set('key2', 'value2');
cache.set('key3', 'value3');
cache.set('key4', 'value4'); // 超过最大大小,key1 将被移除

var value1 = cache.get('key1');
print(value1); // 输出: null,因为key1已被移除
回到顶部