createFormData static method

Future<FormData> createFormData({
  1. Map<String, dynamic>? fields,
  2. Map<String, File>? files,
  3. Map<String, List<File>>? multipleFiles,
})

Create FormData from Map with optional files

Implementation

static Future<FormData> createFormData({
  Map<String, dynamic>? fields,
  Map<String, File>? files,
  Map<String, List<File>>? multipleFiles,
}) async {
  final formData = FormData();

  // Add regular fields
  if (fields != null) {
    fields.forEach((key, value) {
      if (value != null) {
        formData.fields.add(MapEntry(key, value.toString()));
      }
    });
  }

  // Add single files
  if (files != null) {
    for (var entry in files.entries) {
      if (entry.value.existsSync()) {
        final multipartFile = await MultipartFile.fromFile(
          entry.value.path,
          filename: entry.value.path.split('/').last,
        );
        formData.files.add(MapEntry(entry.key, multipartFile));
      }
    }
  }

  // Add multiple files
  if (multipleFiles != null) {
    for (var entry in multipleFiles.entries) {
      for (var file in entry.value) {
        if (file.existsSync()) {
          final multipartFile = await MultipartFile.fromFile(
            file.path,
            filename: file.path.split('/').last,
          );
          formData.files.add(MapEntry(entry.key, multipartFile));
        }
      }
    }
  }

  return formData;
}