transformResponse method

  1. @override
Future transformResponse(
  1. RequestOptions options,
  2. ResponseBody responseBody
)
override

transformResponse allows changes to the response data before it is passed to ResponseInterceptor.

Note: As an agreement, you must return the responseBody when the Options.responseType is ResponseType.stream.

Implementation

@override
Future transformResponse(
  RequestOptions options,
  ResponseBody responseBody,
) async {
  // Return streams and bytes as-is
  if (options.responseType == ResponseType.stream) {
    return responseBody;
  }

  final responseBytes = await consolidateBytes(responseBody.stream);

  if (options.responseType == ResponseType.bytes) {
    return responseBytes;
  }

  // Always decode as string, no JSON parsing
  return utf8.decode(responseBytes, allowMalformed: true);
}