1import 'package:dio/dio.dart';
2
3class CacheInterceptor extends Interceptor {
4 CacheInterceptor();
5
6 var _cache = new Map<Uri, Response>();
7
8 @override
9 onRequest(RequestOptions options) async {
10 return options;
11 }
12
13 @override
14 onResponse(Response response) async {
15 _cache[response.request.uri] = response;
16 }
17
18 @override
19 onError(DioError e) async{
20 print('onError: $e');
21 if (e.type == DioErrorType.CONNECT_TIMEOUT || e.type == DioErrorType.DEFAULT) {
22 var cachedResponse = _cache[e.request.uri];
23 if (cachedResponse != null) {
24 return cachedResponse;
25 }
26 }
27 return e;
28 }
29}