sendMultipartRequest method

dynamic sendMultipartRequest(
  1. String completeUrl,
  2. String method,
  3. Map body
)

Implementation

sendMultipartRequest(
  String completeUrl,
  String method,
  Map body,
) async {
  bool Function(dynamic) _isFile =
      (e) => e is Uint8List || e is List<Uint8List>;
  final nonFileParams = toStringMap(
      Map.fromEntries(body.entries.where((e) => !_isFile(e.value))));

  List<http.MultipartFile> files = [];
  body.entries.where((e) => _isFile(e.value)).forEach((e) {
    var file_name = body[e.key + '_name'];
    files.add(
      http.MultipartFile.fromBytes(
        e.key,
        e.value,
        filename: file_name,
        contentType: _getMediaType(file_name),
      ),
    );
  });

  final request = http.MultipartRequest(method, Uri.parse(completeUrl))
    ..headers.addAll(toStringMap(_headers()))
    ..files.addAll(files);
  nonFileParams.forEach((key, value) => request.fields[key] = value);

  var response = await http.Response.fromStream(await request.send());
  return response;
}