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 7 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
FIX(EditorImage): Support File type in addition to file path
File type in addition to file pathRemoved all deprecated configuration settings.
<br/>
mime, image, archive, and crypto packages with smaller, internally versions.locale inside EmojiEditorConfigs to I18nEmojiEditor.One column per month.
FIX(design-grounded): Fixed an issue where the scrollbar in the grounded bottombar did not restore correctly after opening a subeditor.
FIX(layer-stack): Resolved an issue where the outside overlay color on layers depended on the crop_rotate_editor instead of the active subeditor.
FIX(grounded-design): Resolved an issue in the grounded design where switching between screens caused an error due to the ScrollController.
FIX(layer-interaction): Resolved an issue where layers with blocked interaction also prevented interaction with background layers. Resolves #374
FIX(emoji-editor): Resolved an issue where categoryViewConfig caused an error. Resolves #373.
REFACTOR(configs): Rename configuration properties for clarity.
FEAT(paint-editor): Add a new 'pixelate' paint mode to censor specific areas. This paint mode is only supported when using the Impeller rendering engi
enableRoundArea, which allows the censored area to be rounded instead of rectangular.FEAT(paint-editor): Add a new 'blur' paint mode to censor specific areas.
FEAT(layers): Add missing showLayers config to enable/disable layers in paint and crop editor.
showLayers config to enable/disable layers in paint and crop editor.FIX(export): Resolve an issue where exporting the first state history did return all state histories. Resolves #353.
FEAT(callback): Introduced onEscapeButton callback inside MainEditorCallbacks to allow external handling of the Escape key logic.
onEscapeButton callback inside MainEditorCallbacks to allow external handling of the Escape key logic.FIX(text-editor): Ensure text editor layer scales correctly when editing. Added enableMainEditorZoomFactor to textEditorConfigs to apply the zoom fact
enableMainEditorZoomFactor to textEditorConfigs to apply the zoom factor in the text editor as well. Resolves #349.FEAT(layer): Add meta field to layermodels for custom metadata in export/import.
FEAT(export): Optimize the export process by including only parameters that were modified in tune adjustments. This reduces the exported file size.
FIX(generation): Use captureOnlyBackgroundImageArea instead of captureOnlyDrawingBounds for background cropping.
captureOnlyBackgroundImageArea instead of captureOnlyDrawingBounds for background cropping.PERF(capture-image): Improved image capture performance by minimizing its impact on the main thread.
FIX(paint-editor): Ensure bottombar selection updates in UI when changed.
FIX(crop_rotate_editor): Fixed an issue where the crop-rotate editor would throw multiple errors when reopened. Resolves issue #236 and #237.
FEAT(layer): Added new methods lockAllLayers and unlockAllLayers to the main editor, enabling direct locking or unlocking of all layers.
lockAllLayers and unlockAllLayers to the main editor, enabling direct locking or unlocking of all layers.FIX(export/import): Resolve an issue where exported stickers within the JSON file could no longer be imported. Resolves issue #334
FIX(blur-editor): Resolve issue where the slider animation does not work in the blur editor.
vibration to 3.1.1.FIX(paint-editor): Resolve issue where the paint editor did not use appBarColor from the style configuration. More details in PR #333
appBarColor from the style configuration. More details in PR #333FIX(layer-interaction): Fix issue where layers remove-area still appear when attempting to move a layer, even when enableMove is set to false. Resolve
enableMove is set to false. Resolves issue #332enableEdit to the layer interaction options, allowing users to disable direct editing of text layers.Removed all deprecated values, including:
Layer Interaction Overhaul:
enableInteraction property on layers with the new LayerInteraction class, introducing more specific configuration options:
enableMove, enableScale, enableRotate, and enableSelection.Customizable Interaction Widgets:
LayerInteractionWidgets with two new options:
children: Allows users to define their own interactive button designs when the layer is selected.border: Enables users to customize the border appearance of selected layers for a fully tailored design.TextLayerDataPaintingLayerDataEmojiLayerDataStickerLayerDataReactiveWidgetDataReactiveAppbarDataserializeStickerexportStickersCHORE(dependencies): Update emoji_picker_flutter to 4.3.0, vibration to 3.0.0 and http to 1.3.0.
emoji_picker_flutter to 4.3.0, vibration to 3.0.0 and http to 1.3.0.CHORE(vibration): Updated the vibration package to version 2.1.0.
vibration package to version 2.1.0.FIX(grounded-design): Fixed an issue where aspect ratios were incorrectly selected regardless of the canChangeAspectRatio flag.
canChangeAspectRatio flag.DOCS(readme): update readme to reflect latest changes
FIX(paint-editor): Resolved an issue where the freestyle painter didn't update the painting in real-time until the user finished painting.
FEAT(state-history): Improve internal state history to consume less RAM during in-app usage, enhancing performance in memory-constrained environments.
enableMinify option to ExportEditorConfigs (enabled by default), which further reduces the output file size by minifying key structures. Even with minification disabled, export sizes are notably smaller due to optimizations.features and shared directories for better maintainability.key_minifier to ensure reliability of the minification process.See pull request #322 for more details.
FEAT(export/import): Improve widget-layer import/export to enable setting up a widgetLoader inside the ImportEditorConfigs that loads widgets using cu
widgetLoader inside the ImportEditorConfigs that loads widgets using custom logic without converting them to Uint8List. See pull request #315 for more details.FEAT(emoji): Preload emoji font on web platforms when the main editor opens. This behavior can be enabled or disabled in the emojiEditor configuration
enablePreloadWebFont flag.FIX(web): Resolved performance issues after implementing changes for WASM compatibility. Replaced dartify with toDart, improving conversion performanc
dartify with toDart, improving conversion performance from an average of 600ms to 20ms.FIX(crop): Corrected an issue where cropping with specific aspect ratios did not work when the editor was embedded.
FEAT(dependencies): Update emoji_picker_flutter to 4.2.0 and image to 4.5.2. Adds support for custom translations in emoji editor for emoji search.
emoji_picker_flutter to 4.2.0 and image to 4.5.2. Adds support for custom translations in emoji editor for emoji search.FEAT(export-history): Introduce the serializeSticker parameter to ExportEditorConfigs to enable exporting only StickerLayerData without converting the
serializeSticker parameter to ExportEditorConfigs to enable exporting only StickerLayerData without converting the sticker to a Uint8List. This change incorporates the updates from pull request #306.FIX(android): Resolve crop-drag conflicts with navigation gestures on android. This resolves issue #303
FEAT(Wasm): Replaced the dart:html and dart:js packages with package:web and dart:js_interop to enable WebAssembly (Wasm) support. The current Flutter
dart:html and dart:js packages with package:web and dart:js_interop to enable WebAssembly (Wasm) support.
The current Flutter version 3.27.1 has an open issue with the ColorFiltered widget. As a result, the tune and filter editor will not function in Wasm. Once Flutter resolves this issue, the editor should work without requiring further updates.FIX(zoom): Corrected the layer rotation calculation when the user drags the rotation button. This resolves issue #266
For more details on why these breaking changes were made and what improvements they bring, check out that GitHub discussion.
custom widgets, icons, and theme files into the configs directory for better organization.theme files to styles to better reflect their purpose.custom widgets, icons, and theme files are now located directly in the configs directory of the editor.Style for consistency.For more details on why these breaking changes were made and what improvements they bring, check out that GitHub discussion.
FIX(layer): Resolve issue that layer reposition correctly after screen rotation. This resolves issue #283
Fix(version): Set minimum Flutter version to 3.27.0. This resolves issue #287
3.27.0. This resolves issue #287FIX(lint): Resolve lint issues after upgrading to Flutter 3.27.0
3.27.0FEAT(Main-Editor): Added updateBackgroundImage method to update the editor's background image.
updateBackgroundImage method to update the editor's background image.- STYLE: Format dart code
FIX(import): Fixed an issue where imported layers didn't scale correctly on different screen sizes. This resolves issue #272
FIX(zoom): Fixed an issue where the minimum zoom level setting had no effect, ensuring proper enforcement of zoom boundaries in the viewer. This resol
FIX(keyboard): resolve issue that escape key throw an error when the context menu is open. This resolves issue #260
STYLE(AppBar): moved close action to AppBar's leading parameter for improved layout consistency.
FIX(CustomWidgets): resolve issue preventing user from using custom widget removeLayerArea.
removeLayerArea.FEAT(Layer): Introduce the enableInteraction configuration in the Layer class to toggle interaction capabilities.
enableInteraction configuration in the Layer class to toggle interaction capabilities.bodyItemsRecorded to all editors which can direct generate the final image. This option enables the recording of custom body widgets, enhancing frame functionality.FIX(Recorder): Resolve issue where the editor would incorrectly capture drawing boundaries if the user set captureOnlyDrawingBounds to true. This reso
captureOnlyDrawingBounds to true. This resolves issue #249FIX(Generation-Configs): Removed unnecessary assert for captureOnlyBackgroundImageArea and captureOnlyDrawingBounds, which was blocking certain combin
captureOnlyBackgroundImageArea and captureOnlyDrawingBounds, which was blocking certain combinations for generating transparent images. Details discussed here.FEAT(Tune-Editor): Introduced the new "Tune" editor, enabling users to adjust image contrast, saturation, and brightness for enhanced control over ima
FEAT(Tune-Editor): Introduced the new "Tune" editor, enabling users to adjust image contrast, saturation, and brightness for enhanced control over image tuning.
CHORE(Dependency): Update image dependency to version 4.3.0.
CHORE(Dependency): Update vibration dependency to version 2.0.1.
CHORE(Dependency): Update mime dependency to version 2.0.0.
FIX(Example): Resolve the issue where the movable_background_image example displays the helper lines in the wrong position.
FIX(Example): Resolve all linting issues in the example code.
FIX(Paint-Editor): Resolve issue where undo-redo action capturing the incorrect image. This resolves issue #239
FEAT(Emoji-Editor): Update the emoji-editor to version 3.1.0 with custom view order configuration support.
3.1.0 with custom view order configuration support.FEAT(Filter): Filter-preview widgets are now animated with a default fadeInUp effect.
hideToolbarOnInteraction to true in the layerInteraction settings.FEAT(Custom-Widgets): add custom widgets to replace layer interaction buttons (edit, remove, rotateScale)
Your coding agent can read these notes before it upgrades. Set up the MCP server →