getBody<T> method
Returns decoded body data.
Useful for receiving transfer objects.
Allowed types are: String, Map<String, dynamic>, List<dynamic>,
Uint8List, Stream<Uint8List>, dynamic
.
If T is dynamic, the body data will be returned as json (Map or List).
Implementation
Future<T> getBody<T>({TransferBean<T>? bean}) async {
try {
if (bean != null) {
return bean.toObject(await getJsonBody());
} else if (T == String) {
return await getTextBody() as T;
} else if (T == Map<String, dynamic>) {
return await getJsonBody() as T;
} else if (T == Uint8List) {
return await getByteBody() as T;
} else if (T == List<dynamic>) {
return await getJsonListBody() as T;
} else if (T == Stream<Uint8List>) {
return bodyData as T;
} else if (T == Stream<List<int>>) {
return bodyData as T;
} else if (T == dynamic) {
return jsonDecode(await getTextBody());
}
} on CodecException catch (e) {
throw ApiRequestException.badRequest(e.message);
} catch (_) {
throw ApiRequestException.badRequest('Invalid body data.');
}
throw ApiError.invalidType(T);
}