saveImages method
Implementation
Future<void> saveImages(
Map<String, List<Map<String, Object?>?>?> response,
) async {
final imageEditorItems = editorItems
.where((element) => element.type == EEditorType.image)
.toList();
if (imageEditorItems.isEmpty) return;
final futures = <Future>[];
for (final imageEditorItem in imageEditorItems) {
var value = dataEntity[imageEditorItem.fieldName];
UploadImageInfo? uploadImageInfo = imageEditorItem.uploadImageInfo;
if (value == null) continue;
if (uploadImageInfo == null) continue;
List<File> images = Methods.getListFile(value);
List<Map<String, Object?>?> listData =
response[uploadImageInfo.responseIdsName] ?? [];
for (Map<String, Object?>? data in listData) {
if (data == null) continue;
// id của dữ liệu chính
int id = Methods.getInt(data, 'ID');
if (id > 0) {
for (File image in images) {
Future<String> upload;
if (uploadImageInfo.parentTableName != null &&
uploadImageInfo.parentTableName != uploadImageInfo.tableName) {
upload = Methods.uploadFileParentChild(
image,
uploadImageInfo.tableName,
-1,
uploadImageInfo.fieldName,
uploadImageInfo.parentTableName!,
id,
);
} else {
upload = Methods.uploadFileParent(
image,
uploadImageInfo.tableName,
id,
uploadImageInfo.fieldName,
);
}
futures.add(
upload.then((value) {
if (kDebugMode) {
print('Result upload image: $value');
}
if (response[uploadImageInfo.tableName] == null) {
response[uploadImageInfo.tableName] = <Map<String, Object>>[];
}
var list = response[uploadImageInfo.tableName];
list!.add({
'ID': Methods.getFileId(value),
'refID': id,
'hinhAnh_image_path': Methods.getFilePath(value),
});
}, onError: (err) {
if (kDebugMode) {
print('Error upload image: $err');
}
}),
);
}
}
}
}
await Future.wait(futures);
}