DartBasicCache

DartBasicCache is a simple caching package for Dart that allows you to easily cache data in your Dart applications.

Installation

Add the following line to your pubspec.yaml file:

dependencies:
  dart_basic_cache: ^1.0.0

Features

  • A simple and easy-to-use caching package.
  • Caches and stores data based on unique URLs.
  • Automatically invalidates cached data after a specified duration.
  • Provides fast access to cached data, avoiding redundant network requests.
  • Supports optional caching to memory and/or file storage.
  • Suitable for usage in both Flutter and Dart projects.

Usage

Import the dart_basic_cache library:

import 'package:dart_basic_cache/dart_basic_cache.dart';

Create an instance of DartBasicCache:

var cache = DartBasicCache();

Initialize the cache (Optional):

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

This will initialize the cache with a file name of "my_cache" and a cache duration of 2 hours.

Cache data:

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

This will cache the jsonData with the specified URL as the unique identifier.

Retrieve cached data:

var data = await cache.getDataFromCache('https://api.example.com/data');
if (data != null) {
  // Use the cached data
} else {
  // Data not found in cache
}

This will retrieve the cached data for the specified URL. If the data is available and not expired, it will be returned. Otherwise, it will return null.

Delete cached data:

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

This will delete the cached data for the specified URL.

Example

Here's a complete example of using DartBasicCache to cache and retrieve data from an 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
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'DartBasicCache Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

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

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

  @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
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('DartBasicCache Example'),
      ),
      body: Center(
        child: cachedData != null
            ? Text(
                'Cached Data:\n$cachedData',
                textAlign: TextAlign.center,
              )
            : CircularProgressIndicator(),
      ),
    );
  }
}

Buy Me A Coffee ☕️

Buy Me A Coffee

Libraries

dart_basic_cache