pro_image_editor
A Flutter image editor: Seamlessly enhance your images with user-friendly editing features.
13.3.1
66K downloads/mo
#1310 most downloaded on pub.dev
hm21/pro_image_editor
What this package is like to depend on
Last release 13 days ago
11 Aug 2026
Ships fairly regularly
a new release about every 9 days
Nearly every release is documented
notes for 344 of 345 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
437 releases · first in 2024
129 releases in the last 12 months
see the full history below
Release timeline
437 releases · Jan 2024 to Aug 2026Releases
latest 60 of 437-
13.3.111 Aug 2026Release notes
Open source →- FIX(crop-rotate): Crop handles no longer jump onto the finger when a drag starts; the gesture slop and the distance to the grabbed handle are compensated.
- FIX(crop-rotate): Corner drags with a fixed aspect ratio now follow the finger diagonally instead of tracking horizontal movement only, and stay inside the image.
- FIX(crop-rotate): Pinch-to-zoom no longer jumps at gesture start and is no longer interrupted when the second finger touches down.
- FIX(crop-rotate): The overlay outside the crop area fades smoothly again when an interaction is interrupted.
- FIX(crop-rotate): Fix the auto zoom-out hit area being misplaced on Android and with custom app bars.
- FIX(crop-rotate): Resizing a tilted image no longer makes it jump around; the tilt bounds now follow the crop animation instead of overriding its zoom, and the auto zoom-out stops at the zoom the tilt requires.
-
13.3.031 Jul 2026Release notes
Open source →- FEAT(layers): Rasterize layers outside a live editor session with
LayerRasterizerandLayerRasterizerHost.
- FEAT(layers): Rasterize layers outside a live editor session with
-
13.2.324 Jul 2026Release notes
Open source →- FIX(main-editor): A layer sharing its position with others (a stack of overlapping layers) can now be dragged away instead of being trapped by their coincident alignment guides. Snapping re-arms once the layer moves clear.
-
13.2.223 Jul 2026Release notes
Open source →- FIX(main-editor): Ignore the spurious scale-end Flutter fires when a finger is added or removed mid-gesture (e.g. a third finger during a two-finger layer rotation). It previously ran the full interaction teardown, corrupting the history stack and crashing on iOS with a
_dependents.isEmptyassertion (#850).
- FIX(main-editor): Ignore the spurious scale-end Flutter fires when a finger is added or removed mid-gesture (e.g. a third finger during a two-finger layer rotation). It previously ran the full interaction teardown, corrupting the history stack and crashing on iOS with a
-
13.2.123 Jul 2026Release notes
Open source →What's Changed
- fix(text-editor): reserve hit-box padding in editing preview so the text box doesn't jump on done by @hiake21cUs in #849
New Contributors
- @hiake21cUs made their first contribution in #849
Full Changelog: v13.2.0...v13.2.1
Release notes
Open source →- FIX(text-editor): Stop the rounded background text from growing and reflowing the moment editing completes (#849). The editing preview now reserves the same hit-box padding as the finished layer and wraps the background at the same column as the editable text, so the background no longer shifts or changes line count when editing ends.
-
13.2.007 Jul 2026Release notes
Open source →- FEAT(paint): Combine several selected paint layers into one via
mergeSelectedLayers()/canMergeSelectedLayers.PaintLayernow holds multipleitems, baking each source transform into a shared frame so the drawing looks identical after merging. - FEAT(filter): Flatten the active filter stack into a single
FilterStateviamergeFilters()/canMergeFilters(appearance-identical; skipped for video-timeline filters).
- FEAT(paint): Combine several selected paint layers into one via
-
13.1.007 Jul 2026Release notes
Open source →What's Changed
- chore: migrate Android module to Flutter's built-in Kotlin and update version to 13.1.0 by @hm21 in #846
Full Changelog: v13.0.0...v13.1.0
Release notes
Open source →- CHORE(android): Migrate the Android module to Flutter's built-in Kotlin (drop the manual Kotlin Gradle Plugin apply) so the plugin no longer triggers the KGP deprecation warning and stays AGP 9+ compatible. Now requires Flutter 3.44+.
-
13.0.003 Jul 2026Release notes
Open source →- FEAT(tune): Replace the
luminancecontrol (which only desaturated) with a realtintgreen–magenta adjustment, the natural complement totemperature. - FIX(filter): Fix
colorOverlaytinting towards the complementary color instead of the overlay color (inverted sign), and rebuildfadeas a proper fade (lower contrast + lifted black point) instead of a desaturation. - BREAKING(tune): Remove the
sharpnesscontrol (a per-pixel color matrix cannot sharpen) and renameluminance→tintacrossColorFilterAddons,TuneEditorIconsandI18nTuneEditor; saved histories using the old tune ids are no longer recognized.
- FEAT(tune): Replace the
-
12.11.101 Jul 2026Release notes
Open source →- FIX(layers): Anchor the video-timeline
scalelayer animation on the layer's visual center. Combiningscalewith aslide(e.g. slide-in from the top) previously drifted the layer in diagonally instead of straight, because scaling used the layout-box center while the layer content is painted off-center.
- FIX(layers): Anchor the video-timeline
-
12.11.1-dev.101 Jul 2026 pre-releaseNothing published for this version
-
12.11.029 Jun 2026Release notes
Open source →- FEAT(crop-rotate): Add perspective tilt/skew (#525). New
CropRotateTool.tiltwith rotate/horizontal/vertical rulers (TiltConfigs); the crop stays inside the tilted image via auto-zoom, and tilt is hidden in the video editor by default.
- FEAT(crop-rotate): Add perspective tilt/skew (#525). New
-
12.10.027 Jun 2026Release notes
Open source →- FEAT(helper-lines): Add app-defined custom snapping guide lines (#834).
HelperLineConfigs.customGuidesaccepts a list ofHelperGuideLines (vertical or horizontal, positioned with absolute editor-body pixels or a normalized0.0-1.0fraction) that participate in layer snapping and are drawn - using the newHelperLineStyle.customGuideColor- while a layer snaps to them. Useful for safe areas, thirds, columns or any layout-specific alignment points. See the newCustom-Guide-Linesexample. - FEAT(helper-lines): Text and paint layers now snap by their edges - left/center/right and top/center/bottom - in addition to their center (#833). When aligning to the editor center lines, another layer or a custom guide, whichever edge sits closest to the guide snaps to it, making it easy to align text/paint blocks by their visible edge. Other layer types continue to snap by their configured anchor.
- FEAT(helper-lines): Add app-defined custom snapping guide lines (#834).
-
12.9.027 Jun 2026Release notes
Open source →- FEAT(editors): Support keyboard handling in the sub-editors, not just the main editor (#837). The
onKeyboardEventcallback is now available on every standalone editor's callbacks (crop-rotate, paint, filter, tune, blur) viaStandaloneEditorCallbacks; returningtrueconsumes the event and skips the built-in shortcut. The crop-rotate and paint editors additionally gain anenableKeyboardShortcutsoption (defaulttrue) to disable their built-in shortcuts (e.g.R/Fin the crop-rotate editor). Previously these callbacks and the option only affected the main editor, so the crop-rotateR/Fshortcuts could not be intercepted or disabled.
- FEAT(editors): Support keyboard handling in the sub-editors, not just the main editor (#837). The
-
12.8.227 Jun 2026Release notes
Open source →- FIX(crop-rotate): Honor
initAspectRatiofor the oval cropper in the main editor's initial state. Opening the editor directly inCropMode.ovalwith a fixedinitAspectRatio(e.g.1.0) previously rendered and exported an ellipse stretched to the full image bounds for non-square images, because the initial (un-transformed) state never consultedinitAspectRatioand fell back to the full image aspect ratio. The initial oval mask now uses a centered crop of the requested ratio in the overlay, the capture overlay and the export clip (so1.0produces a circle), while a free (-1) or original (0.0) ratio keeps the previous full-image behavior.
- FIX(crop-rotate): Honor
-
12.8.127 Jun 2026Release notes
Open source →- FIX(crop-rotate): Cover the image edge with the crop overlay when the image is panned. The darkened overlay is painted on top of the image and its outer rectangle matched the rendered image bounds exactly, so when an image edge floated inside the viewport (e.g. the image pushed to the bottom) anti-aliasing along that shared edge left a ~1px partially-transparent seam that revealed a thin line of the image. The overlay rectangle is now slightly overscanned beyond the image bounds so the seam falls on the surrounding background where it is invisible.
-
12.8.024 Jun 2026Release notes
Open source →- FIX(layers): Make the video-timeline
slidelayer animation edge-aware. Previously the layer was only translated by its own width/height (a single layer size), so a layer that did not sit against the canvas edge stayed partially visible while sliding in/out. The slide now uses the layer's center and the canvas size to push the layer's nearest edge exactly onto (or off) the canvas border, so off-center layers leave the visible area completely. The preview math mirrors the matching native renderer change inpro_video_editor(ApplyAnimation.kt/ApplyAnimation.swift). Use this together with the correspondingpro_video_editorrelease so the in-editor preview keeps matching the exported video. Prerelease.
- FIX(layers): Make the video-timeline
-
12.8.0-dev.124 Jun 2026 pre-releaseNothing published for this version
-
12.7.024 Jun 2026Release notes
Open source →- FEAT(layers): Add first-class per-layer enter/leave animations for the video timeline. A new
LayerAnimationmodel (typefade/slide/scale,phaseanimateIn/animateOut/animateInOut,duration,curve, optionalslideDirectionandscaleFrom) can be attached to any layer via the newLayer.animationslist (or set on an existing layer throughProImageEditor.setLayerTimeline(animations: …)), mirroring thepro_video_editormodel so the in-editor preview matches the exported result. The video-layer-timeline preview is now phase-aware: it composes fade (opacity), slide (per-direction translation) and scale effects across a layer's enter and exit windows, so the enter and leave phases can use distinct animation types. The legacyenterDuration/exitDuration/enterCurve/exitCurvefade fields are kept as a back-compat convenience and can be read as a unified animation list viaLayer.effectiveAnimations.animationsis serialized intoMap/fromMapand carried throughcopyWith, equality and layer cloning. Non-breaking, additive change.
- FEAT(layers): Add first-class per-layer enter/leave animations for the video timeline. A new
-
12.7.0-dev.124 Jun 2026 pre-releaseNothing published for this version
-
12.6.022 Jun 2026Release notes
Open source →- FEAT(import-export): Add optional
widgetLoader(andwidgetRecords) parameters toCompleteParameters.fromMapandCompleteParameters.fromJsonso widget/sticker layers exported with anexportConfigs.idcan be reconstructed. This is a non-breaking, additive change; existing callers are unaffected.
- FEAT(import-export): Add optional
-
12.5.322 Jun 2026Release notes
Open source →- CHORE(main-editor): Refactor the layer-scale regression test for readability.
-
12.5.222 Jun 2026Release notes
Open source →- FIX(main-editor): Prevent layer scale from compounding (layers shrinking) when a single paint session adds multiple layers. Shared layer instances reused across history entries are now rescaled at most once per resize/import recalculation.
-
12.5.2-dev.122 Jun 2026 pre-releaseNothing published for this version
-
12.5.115 Jun 2026Release notes
Open source →- FEAT(main-editor): Add
interactiveViewerClipBehavioroption toMainEditorConfigs(defaultClip.hardEdge) to control clipping of the editor's interactive content area.
- FEAT(main-editor): Add
-
12.5.014 Jun 2026Release notes
Open source →- FEAT(crop-rotate): Add
enableKeepAspectRatioOnRotateoption to keep the selected aspect ratio orientation when rotating (e.g.9:16stays9:16instead of becoming16:9), zooming the image in so it still fully covers the crop area.
- FEAT(crop-rotate): Add
-
12.4.807 Jun 2026 -
12.4.706 Jun 2026Release notes
Open source →- FIX(example): Update Supabase initialization to use publishable key and upgrade
supabase_flutterdependency to 2.14.1.
- FIX(example): Update Supabase initialization to use publishable key and upgrade
-
12.4.606 Jun 2026 -
12.4.528 May 2026Release notes
Open source →- FIX(layers): Improve text quality by applying
FilterQuality.highwhen rendering layer images with transforms.
- FIX(layers): Improve text quality by applying
-
12.4.425 Apr 2026Release notes
Open source →- FIX(layers): Improve exported layer resolution for scaled layers to avoid blurry output.
-
12.4.317 Apr 2026Release notes
Open source →- FIX(state-manager): Update activeFilters and activeTuneAdjustments to directly use historyPointer.
-
12.4.217 Apr 2026Release notes
Open source →- FEAT(state-manager): Add
replaceHistory()to replace an existing history entry in the stack (current pointer by default, or a custom index).
- FEAT(state-manager): Add
-
12.4.2-dev.117 Apr 2026 pre-releaseNothing published for this version
-
12.4.116 Apr 2026Release notes
Open source →- FEAT(main-editor): Add
captureImageOnDonetoMainEditorConfigs(defaulttrue) to make finalcaptureEditorImage()on done optional. - FIX(main-editor): Prevent
_isProcessingFinalImagefrom getting stuck by guarding done-flow cleanup withtry/finally.
- FEAT(main-editor): Add
-
12.4.015 Apr 2026Release notes
Open source →- FEAT(audio-editor): Add
volume,loop,audioStartTime,audioEndTime, andendTimefields toAudioTrack. - FEAT(complete-parameters): Add
audioTracksfield (List<AudioTrack>) toCompleteParametersfor multiple audio track support. - DEPRECATED(complete-parameters):
customAudioTrack— useaudioTracksinstead. - DEPRECATED(audio-editor):
enableLoopparameter inAudioTrack.copyWith— useloopinstead.
- FEAT(audio-editor): Add
-
12.3.615 Apr 2026Release notes
Open source →- FEAT(complete-parameters): Export
metafield inCompleteParametersso user-defined metadata is available in theonCompleteWithParameterscallback.
- FEAT(complete-parameters): Export
-
12.3.515 Apr 2026Release notes
Open source →- FEAT(processor): Add
initializationDelaytoProcessorConfigsto optionally defer isolate/thread startup and avoid jank during page transition animations.
- FEAT(processor): Add
-
12.3.413 Apr 2026Release notes
Open source →- FIX(main-editor): Preserve active
filters,tuneAdjustments, andmetainaddHistory()when values are not explicitly provided. - FIX(main-editor): Store copied
filters/tuneAdjustments/metain history entries to prevent shared-reference mutations across undo/redo states.
- FIX(main-editor): Preserve active
-
12.3.4-dev.313 Apr 2026 pre-releaseNothing published for this version
-
12.3.4-dev.213 Apr 2026 pre-releaseNothing published for this version
-
12.3.4-dev.113 Apr 2026 pre-releaseNothing published for this version
-
12.3.313 Apr 2026Release notes
Open source →- FEAT(filter-editor): Add unique
idtoFilterState, export/import it, and generate backward-compatible IDs when missing in older history payloads.
- FEAT(filter-editor): Add unique
-
12.3.213 Apr 2026Release notes
Open source →- FEAT(filter-editor): Add
namefield toFilterStateto carry the filter name through the editor, history, and import/export. - FEAT(state-manager): Expose
activeMetaas a public field, updated on every undo/redo alongsideactiveLayers.
- FEAT(filter-editor): Add
-
12.3.112 Apr 2026Release notes
Open source →- FEAT(state-history): Add
metafield (Map<String, dynamic>) toEditorStateHistoryfor user-defined data that is preserved across undo/redo and import/export. - FEAT(layers): Add
basePixelRatioparameter tocaptureAsPng,captureAllLayers, andcaptureAllLayersWithMetafor image-relative layer export resolution. - FIX(timeline): Keep hidden layers painted in the render tree so
captureAsPngworks for timeline-dismissed layers. - FIX(layers): Use
imageInfos.pixelRatioinstead of device pixel ratio for layer capture indoneEditing, ensuring correct export resolution relative to the source image.
- FEAT(state-history): Add
-
12.3.1-dev.512 Apr 2026 pre-releaseNothing published for this version
-
12.3.1-dev.412 Apr 2026 pre-releaseNothing published for this version
-
12.3.1-dev.312 Apr 2026 pre-releaseNothing published for this version
-
12.3.1-dev.211 Apr 2026 pre-releaseNothing published for this version
-
12.3.1-dev.111 Apr 2026 pre-releaseNothing published for this version
-
12.3.011 Apr 2026Release notes
Open source →- FEAT(timeline): Add
metafield toFilterStateandTuneAdjustmentMatrixfor storing arbitrary metadata on filters and tune adjustments. - FEAT(timeline): Add
copyWith()toFilterStateandTuneAdjustmentMatrix. - FEAT(main-editor): Add
setFilterTimeline()andsetTuneTimeline()methods for updating timeline properties of filters and tune adjustments. - FEAT(main-editor): Support
skipUpdateHistoryinsetFilterTimeline()andsetTuneTimeline()for live trimming without history overhead. - PERF(main-editor):
setLayerTimelinewithskipUpdateHistorynow copies only the affected layer instead of the entire layer list. - PERF(main-editor): Skip
setLayerTimelineentirely when no values would change. - REFACTOR(state-manager): Simplify
activeFiltersandactiveTuneAdjustmentsto public fields.
- FEAT(timeline): Add
-
12.3.0-dev.711 Apr 2026 pre-releaseNothing published for this version
-
12.3.0-dev.611 Apr 2026 pre-releaseNothing published for this version
-
12.3.0-dev.511 Apr 2026 pre-releaseNothing published for this version
-
12.3.0-dev.411 Apr 2026 pre-releaseNothing published for this version
-
12.3.0-dev.311 Apr 2026 pre-releaseNothing published for this version
-
12.3.0-dev.211 Apr 2026 pre-releaseNothing published for this version
-
12.3.0-dev.111 Apr 2026 pre-releaseNothing published for this version
-
12.2.211 Apr 2026Release notes
Open source →- FEAT(main-editor): Expose
editTextLayer,editPaintLayer,applyTextLayerChanges,removeFilter, andclearFiltersas public methods. - DOCS(main-editor): Add doc comments to
editTextLayer,editPaintLayer,applyTextLayerChanges,removeFilter, andclearFilters.
- FEAT(main-editor): Expose
-
12.2.111 Apr 2026Release notes
Open source →- FIX(timeline): Recalculate layer visibility when
startTime,endTime,enterDuration, orexitDurationchange while the video is paused.
- FIX(timeline): Recalculate layer visibility when
-
12.2.009 Apr 2026Release notes
Open source →- FEAT(timeline): Add video timeline visibility to layers, filters, and tune adjustments with configurable
startTime,endTime, enter/exit durations and curves. - FEAT(complete-parameters): Add
filterStates,tuneAdjustments, andcapturedLayerstoCompleteParameters. AddcaptureLayersOnDoneconfig toMainEditorConfigs.
- FEAT(timeline): Add video timeline visibility to layers, filters, and tune adjustments with configurable