onResponse method
The callback will be executed on success.
If you want to continue the response, call handler.next
.
If you want to complete the response with some custom data directly,
you can resolve a Response
object with handler.resolve
and other
response interceptor(s) will not be executed.
If you want to complete the response with an error message,
you can reject a DioError
object with handler.reject
.
Implementation
@override
void onResponse(
Response response,
ResponseInterceptorHandler handler,
) {
if (level == Level.none) return handler.next(response);
logPrint(
'[DIO]<-- ${response.statusCode} ${(response.statusMessage?.isNotEmpty ?? false) ? response.statusMessage : ''}');
if (level == Level.basic) return handler.next(response);
response.headers.forEach((key, value) {
logPrint('[DIO][HEADER]$key:$value');
});
if (level == Level.headers) {
logPrint('[DIO]--> END HTTP');
return handler.next(response);
}
final data = response.data;
if (data != null) {
// logPrint('[DIO]dataType:${data.runtimeType}');
if (data is Map) {
if (compact) {
logPrint('[DIO][DATA]$data');
} else {
_prettyPrintJson(data);
}
} else if (data is List) {
// NOT IMPLEMENT
} else {
logPrint('[DIO][DATA]${data.toString()}');
}
}
logPrint('[DIO]<-- END HTTP');
return handler.next(response);
}