upload method
Implementation
Future<void> upload({
required final String endpoint,
required final List<MultipartFile> files,
required final Function(Response)? onSuccess,
required final Function(Response)? onError,
required final Function(dynamic)? onException,
final Map<String, dynamic>? fields,
final Map<String, String>? headers,
final Map<String, dynamic>? queryParams,
}) async {
try {
final MultipartRequest request = MultipartRequest("POST", _buildUri(endpoint, queryParams));
request.headers.addAll(<String, String>{...defaultHeaders, ...?headers});
if (fields != null) {
request.fields.addAll(
fields.map(
(String key, dynamic value) => MapEntry<String, String>(
key,
value is String ? value : jsonEncode(value),
),
),
);
}
request.files.addAll(files);
final Response response = await request.send().timeout(timeout).then(Response.fromStream);
if (response.statusCode >= 200 && response.statusCode < 300) {
onSuccess?.call(response);
} else {
onError?.call(response);
}
} catch (e) {
onException?.call(e);
}
}