NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1489 most downloaded on pub.dev
A Flutter image editor: Seamlessly enhance your images with user-friendly editing features.
Last release 5 days ago
16 Sep 2026
Ships fairly regularly
a new release about every 9 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
444 releases · first in 2024
Nothing published for this version
Nothing published for this version
FIX(helper-lines): Resolve issue where layers wouldn't release when sharing the same axis.
One column per month.
DOCS(example): Add AI example demonstrating how the image editor can be controlled directly through AI text commands.
FIX(paint-editor): Resolved an issue where the opacityBottomSheetBackground was not applying any effect. This resolves issue #540.
opacityBottomSheetBackground was not applying any effect. This resolves issue #540.FEAT(callbacks): Add onStateHistoryChange callback to MainEditorCallbacks.
onStateHistoryChange callback to MainEditorCallbacks.onImageDecoded callback to MainEditorCallbacks.autoCorrectZoomOffset and AutoCorrectZoomScale parameters to the addLayer method, allowing layers to be added inside the viewport even when the user is zoomed into a specific area of the editor.closeSubEditor method to close all subeditors.FEAT(layer-interaction): Add releaseThreshold to control snapping behavior for helper lines.
releaseThreshold to control snapping behavior for helper lines.isDisabledAtZoom property to control visibility based on zoom level.FIX(widget-layer): Resolved an issue where the edit button on editable WidgetLayer was visible even when interaction was disabled. This resolves issue
FIX(export): Resolved an issue where exporting multiple layers could overwrite existing ones. This resolves issue #527.
FIX(layer): Resolved an issue where importing a layer didn’t restore the boxConstraints.
boxConstraints.FEAT(layer): Show alignment guides when layers share the same x or y position.
FIX(compat): Increased minimum Flutter SDK version to 3.32.0 to ensure compatibility with updated OverlayPortal APIs.
FIX(gestures): Add new widget GestureInterceptor to prevent unnecessary gesture bubbling up the widget tree.
GestureInterceptor to prevent unnecessary gesture bubbling up the widget tree.FEAT(callbacks): Add new onKeyboardEvent callback to MainEditorCallbacks.
onKeyboardEvent callback to MainEditorCallbacks.Removed all deprecated configuration settings.
keepSelectionOnInteraction variable in the LayerInteractionConfigs.moveLayerForward and moveLayerBackward to move a layer one step forward or backward in the stack.moveLayerToFront and moveLayerToBack to move a layer to the top or bottom of the stack.getLayerStackIndex to retrieve a layer's index in the stack.duplicateLayer to the LayerCopyManager.onLayerTapDown and onLayerTapUp to the MainEditorCallbacks.CropMode can now be dynamically switched inside the cropRotateEditor by updating the cropMode value.CropEditor now supports every aspect ratio for the round cropper, not just aspect ratio 1.addPainting method that allows to programmatically create new paintings.<br/>
<br/>
<br/>
<br/>
enableRoundCropper from CropRotateEditorConfigs and add the configuration initialCropMode.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
FEAT(Text-Editor): Add the inputTextFieldAlign property to the TextEditorConfigs to dynamically align the input field. This was requested in #502.
inputTextFieldAlign property to the TextEditorConfigs to dynamically align the input field. This was requested in #502.FEAT(import): Add enableInitialEmptyState to ImportEditorConfigs so the editor can replace the existing state history without including an empty first
enableInitialEmptyState to ImportEditorConfigs so the editor can replace the existing state history without including an empty first page.FIX(bottom-sheet): Wrap bottom sheets in SafeArea to ensure proper display within device safe zones.
SafeArea to ensure proper display within device safe zones.FIX(video-editor): Add missing image parameter to GroundedFilterBar.
image parameter to GroundedFilterBar.FEAT(video-editor): Added new parameters to CompleteParameters required for extending the editor with video editing.
CompleteParameters required for extending the editor with video editing.<br/>
FIX(double-tap): Resolve issue where double tapping still zooms even when enableZoom is set to false. This resolves issue #484.
enableZoom is set to false. This resolves issue #484.FEAT(polygon): Added new paint-mode "polygon".
FIX(widget-layer): copyWith now correctly includes exportConfigs.
copyWith now correctly includes exportConfigs.FIX(Main-Editor): Corrected editor name handling in openPage to ensure proper behavior of onOpenSubEditor, onStartCloseSubEditor and onEndCloseSubEdit
openPage to ensure proper behavior of onOpenSubEditor, onStartCloseSubEditor and onEndCloseSubEditor. This resolves issue #474.FIX(Layers): Corrected size calculation to prevent layer shifting.
FIX(Crop-Rotate-Editor): Ensure the editor respects the maxOutputSize constraint.
maxOutputSize constraint.FIX(Crop-Rotate-Editor): Prevent crashes when clamping values with reversed lower and upper limits. This resolves issue #462.
FEAT(Sticker-Editor): Added builder parameter to StickerEditorConfigs, which will replace buildStickers in the future. The new builder supports direct
builder parameter to StickerEditorConfigs, which will replace buildStickers in the future. The new builder supports directly returning a WidgetLayer instead of just a Widget, enabling more flexibility and control.FIX(Paint-Eraser): Resolved an issue where the layer eraser only worked when the user tapped on a layer.
FIX(Image-Generation): Resolved an issue that the image generation was slowly.
FEAT(Layer): Introduce BoxConstraints to Layer class for enhanced constraint management and layout control.
BoxConstraints to Layer class for enhanced constraint management and layout control.FEAT(Main-Editor): Add EditorSafeArea to the Main editor to follow SubEditor logic.
FIX(Tune-Editor): Ensure the back button works properly. This resolves issue #449.
FIX(Import): Ensure imported numbers are type-safe even if int and double are incorrect. This resolves issue #447.
FEAT(image-converter): Add singleton ImageConverter class for format conversion without the image editor.
ImageConverter class for format conversion without the image editor.FEAT(double-tap): Support double-tap to zoom in/out when zoom is enabled. More details in Feature-Request #429.
FIX(zoom): Fixed issue where config enableMainEditorZoomFactor had no effect when creating a new text-layer. Resolves #426.
enableMainEditorZoomFactor had no effect when creating a new text-layer. Resolves #426.FIX(onCompleteWithParameters): Return correct parameters on completion. Resolves #403.
FEAT(callback): Added copyWith method to all callback models. More details in Feature-Request #424.
copyWith method to all callback models. More details in Feature-Request #424.FEAT(callback): Added onSelectedLayerChanged callback to notify when the selected layer changes. More details in PR #423.
onSelectedLayerChanged callback to notify when the selected layer changes. More details in PR #423.FEAT(jpeg-encoder): Add jpegBackgroundColor option to ImageGenerationConfigs to allow customization of JPEG background color.
jpegBackgroundColor option to ImageGenerationConfigs to allow customization of JPEG background color.<br/>
cropToImageBounds is false to prevent unintended cropping behavior.FEAT: Video editing has now been fully implemented in the image editor across all platforms except the web, for which support is not planned. For more
FEAT: Added clearLayerSelection method to reset selected layers.
clearLayerSelection method to reset selected layers.selectLayerByIndex method to select a layer using its index.selectLayerById method to select a layer by its unique ID.FEAT: Replaced the external packages `emoji_picker_flutter`, `universal_io`, and `flutter_web_plugins` with lightweight internal implementations. The
emoji_picker_flutter, universal_io, and flutter_web_plugins with lightweight internal implementations.
The editor now only relies on official Dart and Flutter packages, reducing dependencies and improving maintainability.ProImageEditor.video.
This feature allows previewing video edits but does not yet support video export.
Example usage can be found here.FIX(import): Resolve state restoration issue causing layer shift on cropped images. Resolves #292.
FIX(state-history): Resolve issue where the state history limitation does not work when enableBackgroundGeneration is set to false.
enableBackgroundGeneration is set to false.FIX(Wasm): Fixes an issue where image generation fails when using WebAssembly. Resolves #391.
DOCS(readme): simplify README for better readability
FEAT: Add getter editorScaleFactor to retrieve current scale factor. See pull request #392 for more details.
editorScaleFactor to retrieve current scale factor. See pull request #392 for more details.STYLE: Improved Dart code formatting
Your coding agent can read these notes before it upgrades. Set up the MCP server →