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

类似于截击响应缓存。
Android中的https://stackoverflow.com/a/32022946/1993001

我正在使用DIO进行网络操作。

最佳答案

您可以在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;
  }
}


然后将其用于:

final dio = Dio()..interceptors.add(CacheInterceptor());


或仅检查库:https://pub.dev/packages/dio_cache

08-17 01:43