Files
fcs/lib/pages/widgets/multi_img_controller.dart

95 lines
2.1 KiB
Dart
Raw Normal View History

2020-09-17 06:02:48 +06:30
import 'dart:io';
2020-10-13 07:50:25 +06:30
import 'callbacks.dart';
2020-09-17 06:02:48 +06:30
import 'display_image_source.dart';
class MultiImgController {
List<String> imageUrls = [];
List<File> imageFiles = [];
2020-09-17 06:02:48 +06:30
List<DisplayImageSource> addedFiles = [];
List<DisplayImageSource> removedFiles = [];
List<DisplayImageSource> fileContainers = [];
CallBack callback;
MultiImgController() {
fileContainers = [];
}
set setImageUrls(List<String> imageUrls) {
if (imageUrls == null) {
return;
}
fileContainers.clear();
this.imageUrls = imageUrls;
imageUrls.forEach((e) {
fileContainers.add(DisplayImageSource(url: e));
});
if (callback != null) {
callback();
}
}
set setImageFiles(List<File> imageFiles) {
if (imageFiles == null) {
return;
}
fileContainers.clear();
this.imageFiles = imageFiles;
imageFiles.forEach((e) {
fileContainers.add(DisplayImageSource(file: e));
});
if (callback != null) {
callback();
}
}
2020-09-17 06:02:48 +06:30
void onChange(CallBack callBack) {
this.callback = callBack;
}
set addFile(DisplayImageSource fileContainer) {
// if (fileContainers.contains(fileContainer)) return;
addedFiles.add(fileContainer);
if (callback != null) {
callback();
}
}
set removeFile(DisplayImageSource 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 (imageFiles.contains(fileContainer.file)) {
this.imageFiles.remove(fileContainer.file);
}
2020-09-17 06:02:48 +06:30
if (callback != null) {
callback();
}
}
2021-09-10 16:48:21 +06:30
List<File?> get getUpdatedFile {
2021-09-10 14:25:37 +06:30
List<File?> _addfiles = getAddedFile;
2021-09-10 16:48:21 +06:30
this.imageFiles!.addAll(_addfiles);
return this.imageFiles;
}
2021-09-10 14:25:37 +06:30
List<File?> get getAddedFile {
2020-09-17 06:02:48 +06:30
return addedFiles.map((e) => e.file).toList();
}
2021-09-10 14:25:37 +06:30
List<String?> get getDeletedUrl {
2020-09-17 06:02:48 +06:30
return removedFiles.map((e) => e.url).toList();
}
}