【问题标题】:Flutter Cache JSON response using http response headerFlutter 使用 http 响应头缓存 JSON 响应
【发布时间】:2020-03-25 16:15:43
【问题描述】:

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

类似 volley 响应缓存的东西。 https://stackoverflow.com/a/32022946/1993001Android

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

【问题讨论】:

    标签: android json api flutter


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-28
      • 2011-03-25
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 2012-04-10
      相关资源
      最近更新 更多