使用 http 响应头的 Flutter Cache JSON 响应

Rah*_*var 5 api android json flutter

我正在尝试为服务器 JSON 响应创建和使用缓存。

像 volley 响应缓存这样的东西。 /sf/answers/2241606251/Android

DIO用于网络操作。

dub*_*ace 4

您可以在 Dio 请求之上使用拦截器创建自己的缓存。

您可以自行创建:

import 'package:dio/dio.dart';

class CacheInterceptor extends Interceptor {
  CacheInterceptor();

  var _cache = new Map<Uri, Response>();

  @override
  onRequest(RequestOptions options) async {
    return options;
  }

  @override
  onResponse(Response response) async {
    _cache[response.request.uri] = response;
  }

  @override
  onError(DioError e) async{
    print('onError: $e');
    if (e.type == DioErrorType.CONNECT_TIMEOUT || e.type == DioErrorType.DEFAULT) {
      var cachedResponse = _cache[e.request.uri];
      if (cachedResponse != null) {
        return cachedResponse;
      }
    }
    return e;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后将其与以下命令一起使用:

final dio = Dio()..interceptors.add(CacheInterceptor());   
Run Code Online (Sandbox Code Playgroud)

或者只是检查库: https: //pub.dev/packages/dio_cache