stash_dio

Creator: coderz1093

Last updated:

0 purchases

stash_dio Image
stash_dio Images

Languages

Categories

Add to Cart

Description:

stash dio

stash_dio #
A stash Dio extension




Overview #
This integration of stash with dio provides a caching interceptor that is able to return the response from a Cache instead of hitting the backend system.
Getting Started #
Add this to your pubspec.yaml (or create it) replacing x.x.x with the latest version of stash_dio:
dependencies:
stash_dio: ^x.x.x
copied to clipboard
Run the following command to install dependencies:
dart pub get
copied to clipboard
Finally, to start developing import the library:
import 'package:stash/stash_api.dart';
import 'package:stash_dio/stash_dio.dart';
copied to clipboard
Usage #
import 'package:dio/dio.dart';
import 'package:stash/stash_api.dart';
import 'package:stash_dio/stash_dio.dart';
import 'package:stash_memory/stash_memory.dart';

class Task {
final int id;
final String title;
final bool completed;

Task({required this.id, required this.title, this.completed = false});

/// Creates a [Task] from json map
factory Task.fromJson(Map<String, dynamic> json) => Task(
id: json['id'] as int,
title: json['title'] as String,
completed: json['completed'] as bool);

/// Creates a json map from a [Task]
Map<String, dynamic> toJson() =>
<String, dynamic>{'id': id, 'title': title, 'completed': completed};

@override
String toString() {
return 'Task $id: "$title" is ${completed ? "completed" : "not completed"}';
}
}

void main() async {
// Creates a store
final store = await newMemoryCacheStore();
// Creates a cache
final cache = wait store.cache(eventListenerMode: EventListenerMode.synchronous)
..on<CacheEntryCreatedEvent>().listen(
(event) => print('Key "${event.entry.key}" added to the cache'));

// Configures a a dio client
final dio = Dio(BaseOptions(baseUrl: 'https://jsonplaceholder.typicode.com'))
..interceptors.addAll([
cache.interceptor('/todos/1'),
LogInterceptor(
requestHeader: false,
requestBody: false,
responseHeader: false,
responseBody: false)
]);

// First call, executes the request and response is received
final task1 = await dio
.get('/todos/1')
.then((Response<dynamic> response) => Task.fromJson(response.data));
print(task1);

// Second call, executes the request and the response is received from the
// cache
final task2 = await dio
.get('/todos/1')
.then((Response<dynamic> response) => Task.fromJson(response.data));
print(task2);
}

copied to clipboard
Features and Bugs #
Please file feature requests and bugs at the issue tracker.
License #
This project is licensed under the MIT License - see the LICENSE file for details

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.