saveImages method

Future<void> saveImages(
  1. Map<String, List<Map<String, Object?>?>?> response
)

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);
}