From 54b74c663cf56e3ff4f40287697fdca2261fc136 Mon Sep 17 00:00:00 2001 From: Guilain F Date: Mon, 27 Oct 2025 17:26:50 +0100 Subject: [PATCH] feat: onImageSelected --- lib/src/form_builder_image_picker.dart | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/src/form_builder_image_picker.dart b/lib/src/form_builder_image_picker.dart index f7e48d3..182851d 100644 --- a/lib/src/form_builder_image_picker.dart +++ b/lib/src/form_builder_image_picker.dart @@ -82,6 +82,14 @@ class FormBuilderImagePicker extends FormBuilderFieldDecoration> { final void Function(Image)? onImage; + /// use this to apply changes on selected images before applying didChange. + /// + /// ```dart + /// (images, remainingImages) => (null != remainingImages && images.length > remainingImages) ? images.take(remainingImages) : images; + /// ``` + final Iterable Function(Iterable images, int? remainingImages)? + onImageSelected; + /// maximum images to pick /// /// also see [showDecoration],[previewAutoSizeWidth] @@ -162,6 +170,7 @@ class FormBuilderImagePicker extends FormBuilderFieldDecoration> { this.imageQuality, this.preferredCameraDevice = CameraDevice.rear, this.onImage, + this.onImageSelected, this.maxImages, this.cameraIcon = const Icon(Icons.camera_enhance), this.galleryIcon = const Icon(Icons.image), @@ -230,7 +239,11 @@ class FormBuilderImagePicker extends FormBuilderFieldDecoration> { availableImageSources: availableImageSources, onImageSelected: (image) { state.focus(); - field.didChange([...value, ...image]); + field.didChange([ + ...value, + ...(onImageSelected?.call(image, remainingImages) ?? + image), + ]); Navigator.pop(state.context); }, );