Flutter dio-http-cache如何处理response的数据

12 min read

dio-http-cache如何处理response的数据

Response _buildResponse(
    CacheObj obj, int statusCode, RequestOptions options) {
    Headers headers;
    if (null != obj.headers) {
    headers = Headers.fromMap((Map<String, List<dynamic>>.from(
            jsonDecode(utf8.decode(obj.headers))))
        .map((k, v) => MapEntry(k, List<String>.from(v))));
    }
    if (null == headers) {
    headers = Headers();
    options.headers.forEach((k, v) => headers.add(k, v ?? ""));
    }
    // add flag
    headers.add(DIO_CACHE_HEADER_KEY_DATA_SOURCE, "from_cache");
    dynamic data = obj.content;
    if (options.responseType != ResponseType.bytes) {
    data = jsonDecode(utf8.decode(data));
    }
    return Response(
        data: data,
        headers: headers,
        extra: options.extra..remove(DIO_CACHE_KEY_TRY_CACHE),
        statusCode: statusCode ?? 200);
}

很容易发现最后返回Response的时候并没有处理isRedirect这个属性,因此这个属性自然而然变成了null