uploadFiles method

Future<Response> uploadFiles({
  1. required String path,
  2. required List<DioUploadFileModel> filesModel,
  3. void sendProgress(
    1. int received,
    2. int total
    )?,
  4. List<Map<String, String>>? body,
  5. CancelToken? cancelToken,
})

Implementation

Future<Response> uploadFiles(
    {required String path,
    required List<DioUploadFileModel> filesModel,
    void Function(int received, int total)? sendProgress,
    List<Map<String, String>>? body,
    CancelToken? cancelToken}) async {
  final mapOfData = <String, dynamic>{};
  for (final file in filesModel) {
    final nextFile = File(file.filePath);
    final fileName = basename(nextFile.path);
    mapOfData.addAll({
      file.fileFiledName: await MultipartFile.fromFile(
        nextFile.path,
        filename: fileName,
      ),
    });
  }
  final formData = FormData.fromMap(mapOfData);

  if (body != null) {
    final x = body.map((e) => MapEntry(e.keys.first, e.values.first));
    formData.fields.addAll(x);
  }
  final Response response = await _dio.post(path,
      data: formData, onSendProgress: sendProgress, cancelToken: cancelToken);
  _throwIfNoSuccess(response);
  return response;
}