request<T, R> method
Future<R>
request<
T, R>({ - required Uri path,
- Map<String, dynamic>? body,
- HttpMethod method = HttpMethod.get,
})
override
Implementation
@override
Future<R> request<T, R>({
required Uri path,
Map<String, dynamic>? body,
HttpMethod method = HttpMethod.get,
}) async {
late Response response;
try {
response = await dio.request(
path.toString(),
data: body,
options: Options(method: method.name),
);
} on DioError catch (e) {
throw e.error;
}
final parsercontainsKey = jsonParserMap.containsKey(T);
if (!parsercontainsKey) {
return response.data;
}
final parser = (jsonParserMap[T] as JsonParser<T>);
try {
if (response.data is List<dynamic> ||
response.data is Map<String, dynamic>) {
final jsonParserIsolate = JsonPareserIsolate<T, R>(
data: response.data,
parser: parser,
);
final parsed = await jsonParserIsolate.parse();
return parsed;
}
return response.data;
} catch (e) {
throw DroneException.jsonDeserializationException(message: '$e');
}
}