onResponse method
FutureOr<Response>
onResponse(
- Response response
)
Implementation
@override
FutureOr<Response> onResponse(Response<dynamic> response) {
var data = <String, dynamic>{};
try {
data = json.decode(response.body as String);
} catch (error, stackTrace) {
log.e(
'Chopper interceptor error',
error: error,
stackTrace: stackTrace,
);
}
final requestId = _getRequestHashCode(response.base.request!);
final statusCode = response.statusCode;
final isError = statusCode < 200 || statusCode >= 300;
/// In error case, do not put data in ResponseBean.
final dynamic responseData;
//ignore: prefer-conditional-expressions
if (isError) {
responseData = null;
} else {
responseData = data.isNotEmpty ? data : response.body;
}
final responseBean = ResponseBean()
..id = requestId
..responseTime = DateTime.now()
..statusCode = response.statusCode
..url = response.base.request?.url.toString()
..method = response.base.request?.method
..statusMessage = response.base.reasonPhrase
..data = responseData
..headers = response.headers;
logManager.onResponse(responseBean);
/// On error
if (isError) {
final errorBean = ErrorBean()
..id = requestId
..errorData = response.error
..statusCode = statusCode
..statusMessage = response.base.reasonPhrase
..url = response.base.request?.url.toString()
..time = DateTime.now();
logManager.onError(errorBean);
}
return response;
}