import 'dart:io'; import 'package:fcs/widget/multi_img_file.dart'; typedef CallBack = void Function(); class MultiImgController { List imageUrls; List addedFiles = []; List removedFiles = []; List fileContainers = []; CallBack callback; MultiImgController() { fileContainers = [FileContainer()]; } set setImageUrls(List imageUrls) { if (imageUrls == null) { fileContainers.add(FileContainer()); return; } fileContainers.clear(); this.imageUrls = imageUrls; imageUrls.forEach((e) { fileContainers.add(FileContainer(url: e)); }); fileContainers.add(FileContainer()); if (callback != null) { callback(); } } void onChange(CallBack callBack) { this.callback = callBack; } set addFile(FileContainer fileContainer) { // if (fileContainers.contains(fileContainer)) return; addedFiles.add(fileContainer); fileContainers.add(FileContainer()); if (callback != null) { callback(); } } set removeFile(FileContainer fileContainer) { if (!fileContainers.contains(fileContainer)) return; fileContainers.remove(fileContainer); if (addedFiles.contains(fileContainer)) { addedFiles.remove(fileContainer); } if (imageUrls.contains(fileContainer.url)) { removedFiles.add(fileContainer); } if (callback != null) { callback(); } } List get getAddedFile { return addedFiles.map((e) => e.file).toList(); } List get getDeletedUrl { return removedFiles.map((e) => e.url).toList(); } }