createFormData static method
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;
}