download method
Future<void>
download(
{ - required String endpoint,
- required String savePath,
- required dynamic onSuccess(
- File
)?,
- required dynamic onError(
- Response
)?,
- required dynamic onException(
- dynamic
)?,
- Map<String, dynamic>? queryParams,
})
Implementation
Future<void> download({
required final String endpoint,
required final String savePath,
required final Function(File)? onSuccess,
required final Function(Response)? onError,
required final Function(dynamic)? onException,
final Map<String, String>? headers,
final Map<String, dynamic>? queryParams,
}) async {
try {
final Uri uri = _buildUri(endpoint, queryParams);
final Request request = Request("GET", uri);
request.headers.addAll(<String, String>{...defaultHeaders, ...?headers});
final StreamedResponse response = await _client.send(request).timeout(timeout);
if (response.statusCode >= 200 && response.statusCode < 300) {
final File file = File(savePath);
await response.stream.pipe(file.openWrite());
onSuccess?.call(file);
} else {
onError?.call(await Response.fromStream(response));
}
} catch (e) {
onException?.call(e);
}
}