Skip to content

Commit 299d63e

Browse files
committed
feat: onImageSelected
1 parent 779e192 commit 299d63e

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

lib/src/form_builder_image_picker.dart

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,14 @@ class FormBuilderImagePicker extends FormBuilderFieldDecoration<List<dynamic>> {
8282

8383
final void Function(Image)? onImage;
8484

85+
/// use this to apply changes on selected images before applying didChange.
86+
///
87+
/// ```dart
88+
/// (images, remainingImages) => (null != remainingImages && images.length > remainingImages) ? images.take(remainingImages) : images;
89+
/// ```
90+
final Iterable<XFile> Function(Iterable<XFile> images, int? remainingImages)?
91+
onImageSelected;
92+
8593
/// maximum images to pick
8694
///
8795
/// also see [showDecoration],[previewAutoSizeWidth]
@@ -162,6 +170,7 @@ class FormBuilderImagePicker extends FormBuilderFieldDecoration<List<dynamic>> {
162170
this.imageQuality,
163171
this.preferredCameraDevice = CameraDevice.rear,
164172
this.onImage,
173+
this.onImageSelected,
165174
this.maxImages,
166175
this.cameraIcon = const Icon(Icons.camera_enhance),
167176
this.galleryIcon = const Icon(Icons.image),
@@ -230,7 +239,11 @@ class FormBuilderImagePicker extends FormBuilderFieldDecoration<List<dynamic>> {
230239
availableImageSources: availableImageSources,
231240
onImageSelected: (image) {
232241
state.focus();
233-
field.didChange([...value, ...image]);
242+
field.didChange([
243+
...value,
244+
...(onImageSelected?.call(image, remainingImages) ??
245+
image),
246+
]);
234247
Navigator.pop(state.context);
235248
},
236249
);

0 commit comments

Comments
 (0)