multipartApi<T> method

Future<T> multipartApi<T>(
  1. Uri uri,
  2. Map<String, String> fields,
  3. String filePath,
  4. T mapperFunction(
    1. dynamic value
    ), {
  5. Map<String, String>? headers,
})

Implementation

Future<T> multipartApi<T>(
  Uri uri,
  Map<String, String> fields,
  String filePath,
  T Function(dynamic value) mapperFunction, {
  Map<String, String>? headers,
}) async {
  try {
    if (!await connectivity.isConnected()) {
      throw AppException(description: L10nConstants.defaultError);
    }
    headers = getHeaders(headers ?? {});
    var multipart = http.MultipartRequest('POST', uri);
    multipart.headers.addAll(headers);
    multipart.fields.addAll(fields);
    multipart.files.add(await http.MultipartFile.fromPath('file', filePath));
    var response = await multipart.send();
    return await _manageStreamedResponse(response, mapperFunction);
  } on AppException catch (e) {
    log(e.toString(), name: 'error');
    rethrow;
  } on ApiException catch (e) {
    log(e.toString(), name: 'error');
    rethrow;
  } catch (ex) {
    log(ex.toString(), name: 'responseError', error: ex);
    throw AppException(description: L10nConstants.defaultError);
  }
}