canvas_editor_flutter 0.19.0 copy "canvas_editor_flutter: ^0.19.0" to clipboard
canvas_editor_flutter: ^0.19.0 copied to clipboard

Complete Flutter scene editor for canvas_core documents with turnkey UI and composable editing, asset, image-import, image-tools, and export capabilities.

0.19.0 #

  • Breaking: require canvas_core 0.16.x and canvas_renderer_flutter 0.15.x.
  • Add path stroke controls and nullable CanvasFields.pathStroke; export StrokeEditor from extensions.dart. Preserve inactive settings and dash values across edits and undo/redo; opacity drags form one undo step.
  • Breaking: FieldCodec readers, fallbacks, and writer values accept Object?; explicitly typed custom writers must accept nullable values.
  • Keep picking and snapping independent of paint visibility, with zoom-aware outline tolerance under nested rotations and nonuniform scales.

0.18.0 #

  • Breaking: require canvas_core 0.15.x and canvas_renderer_flutter 0.14.x.
  • Select icons through their transformed nominal square, including filled-path holes and unused margins. Shadows do not enlarge the selection target.

0.17.0 #

  • Breaking: require canvas_core 0.14.x and canvas_renderer_flutter 0.13.x.
  • Breaking: replace the editor's RenderSnapshot-based render contract with SceneEvaluation, produced from the prepared scene and its computed geometry.
  • Edit linear gradients using explicit local endpoints and ordered stops. Newly created gradients use available target-local layout bounds; existing gradient colors and angles remain editable without requiring creation bounds. Remove the gradient Width control.
  • Simplify the built-in fill editor and field codecs: text, icon, path, and background support none, solid, and gradient fills without redundant capability coercion. Preserve existing representative-color defaults, transparent-color handling, and field undo behavior.

0.16.0 #

  • Move live-editor framing policy into EditorCameraController, including positive-only screen-space padding, usable content-bounds selection, artboard fallback, and existing camera scale limits.
  • Remove obsolete fit/bleed arguments from the built-in PNG export spec while preserving existing contain-export behavior.

0.15.0 #

  • Breaking: require canvas_core 0.12.x and canvas_renderer_flutter 0.11.x.
  • Scene JSON exported through the canonical canvas_core serialization boundary now includes sceneFormatVersion.

0.14.0 #

  • Breaking: require canvas_core 0.11.x and canvas_renderer_flutter 0.10.x.
  • Breaking: replace FieldCodec.commit with explicit canonical field readers and a commit-free writeCanonical scene transform. Presentation reads remain separate through readNode and readScene.
  • Add EditorController.updateField() for canonical read-modify-write field updates. Literal commitField() and functional updateField() now share one runtime-owned canonical mutation path.
  • Add built-in text and icon shadow authoring through aggregate underlay fields, including add/remove, enable/disable, stacking order, signed offsets, blur, RGB color, and alpha controls. Shadow list edits use stable underlay IDs and the latest canonical field value.
  • Breaking: replace EditorDocumentHost.updateSourceDocument() with applySourceEdit(). Source edits must preserve the canonical base scene.
  • Breaking: remove EditorDocumentHost.applyEdit(). Canonical base-scene edits remain available through EditorController.applyEdit() and registered field mutations through commitField() / updateField().
  • Breaking: replace multi-item editor selection with one nullable ElementId. Remove SelectionState, EditorSelectionHost.firstId, selectItems(), clearSelection(), and the corresponding EditorActionContext helpers. Use EditorSelectionHost.value and selectItem(ElementId?).
  • Breaking: replace EditorController.updateDragMany() with updateDrag(ElementId, Vec2) for single-target dragging.
  • Breaking: remove EditorEdits.setElementHidden() and the Layers visibility control. Layers continue to list canonical scene nodes regardless of their persisted Node.hidden value.
  • Breaking: remove canvas-object locking from editor interaction and Layers. Picking and snapping no longer filter locked nodes, EditorEdits no longer exposes setElementLocked(), and Layers no longer stores or renders lock state.
  • Remove the built-in object-lock veto from EditorInteractionPolicy.canMove(). Application-provided canMoveNode policies continue to control movement restrictions.
  • Route text and icon fill editing through CanvasAppearance.foreground while preserving existing source underlays.
  • Keep editor camera framing synchronized when the viewport or artboard size changes.
  • Use local editor constraints for responsive shell and toolbar layout.
  • Keep object dragging stable when viewport or camera geometry changes during an active drag.
  • Make the canvas viewport fill the same layout area used for camera planning.
  • Own derived world interaction geometry for picking, snapping, and drag probes instead of storing those values in canvas_core's ComputedScene.
  • Own the editor's immutable History<T> reducer directly instead of importing history from canvas_core.
  • Own scene picking, path hit testing, snapping types, snap candidate generation, and snap resolution directly in canvas_editor_flutter.
  • Remove the editor's dependency on the former canvas_core_editor.dart interaction entrypoint.

0.13.0 #

  • Breaking: require canvas_core 0.10.x and canvas_renderer_flutter 0.9.x.
  • Breaking: replace CanvasFontAssets, CanvasMediaResolver, and FontDef with passive runtime resources: FlutterFontLoader, FontPickerItem, IconCatalogPort, and CanvasImageAssetResolver.
  • Breaking: change PngExportPort to receive one adapter-resolved, unprepared CanvasSceneDocument plus CanvasPngSpec; remove editable/prepared dual-scene PNG arguments and EditorExportSpec.
  • Add EditorController.resolveSceneForOutput() as the canonical final-output seam. Interactive rendering still resolves and prepares scenes, while final PNG preparation belongs to the authoritative renderer.
  • Move intrinsic-image update subscription ownership from EditorRuntime to CanvasEditorSurface, which owns the FlutterImagePool lifecycle.
  • Make EditorAssetCoordinator.ensureForScene() return whether requested fonts became available and delegate font discovery/loading to the shared core/renderer resource contracts.
  • Use configured picker/fallback fonts when creating text instead of persisting a hardcoded Inter dependency.
  • Migrate image import and the public example to the batch CanvasImageAssetResolver boundary and canonical FlutterCanvasPngRenderer flow.

0.12.1 #

  • Bound best-effort intrinsic metadata lookup during image import and retain the existing 200-by-200 fallback when metadata is unavailable.
  • Allow intrinsic metadata resolution and raster preload to proceed independently so optional metadata cannot block image rendering.

0.12.0 #

  • Breaking: require canvas_core 0.9.x and canvas_renderer_flutter 0.8.x.
  • Create and rebind document-local image assets for asset-library insertion, image import, source replacement, and background removal.
  • Keep CanvasFields.imageSource as the semantic editing field while storing canonical image sources in the scene asset registry.
  • Persist resolved intrinsic dimensions for newly imported and library images when available.

0.11.3 #

  • Route scene JSON exports through the canonical canvas_core serialization boundary.
  • Require canvas_core 0.8.2.

0.11.2 #

  • Invalidate cached text measurement and rendered layout when Flutter reports that the available fonts have changed.
  • Size newly imported images from stable intrinsic metadata while retaining the existing 200-by-200 fallback when metadata is unavailable.
  • Update the runnable example with deterministic symbol fallback, data-URI image metadata, and clearer embedded-image JSON export feedback.

0.11.1 #

  • Add the optional image_tools.dart capability entrypoint.
  • Add the provider-neutral BackgroundRemovalPort and typed background-removal results.
  • Add backgroundRemovalExtension for host-owned background removal inside the standard Image inspector.
  • Keep background removal target-safe across asynchronous selection, source, target, field-editability, and prepared-scene changes.
  • Commit successful replacements through the registered CanvasFields.imageSource field path so normal field policy and undo/redo remain authoritative.
  • Keep image processing, persistence, provider lifecycle, byte handling, and cleanup of unreferenced outputs outside Canvas.

0.11.0 #

  • Breaking: image import no longer participates in the exclusive InspectorBuilder chain. It contributes source controls to the standard inspector instead, so an exclusive inspector override now suppresses image import content together with the intrinsic inspector.
  • Add InspectorSectionBuilder and EditorSurfaceFeatures.inspectorSections for additive standard-inspector content composed in extension registration order.
  • Keep additive inspector content inside the standard inspector card and before intrinsic field controls.
  • Make asynchronous image replacement target-safe by rejecting stale results after selection, source, target, or field-editability changes.

0.10.0 #

  • Breaking: remove InspectorFieldRow.forceDisabled and InspectorFieldRow.disabledReasonOverride; registered field editability now flows through FieldState.disabledReason.
  • Add EditorDocumentAdapter.fieldEditDisabledReason(...) for source-document-aware registered literal edit restrictions.
  • Enforce source-document field denial in EditorRuntime.commitField() using the current canonical transaction state.
  • Apply source-document editability to scene-level registered fields.
  • Export kSceneFieldsId through the public extensions.dart entrypoint.

0.9.0 #

  • Breaking: require canvas_core 0.8.x and canvas_renderer_flutter 0.7.x.
  • Breaking: remove PngExportAvailability; configure canShare and canSave directly on PngExportCapability.
  • Breaking: remove JsonExportAvailability; configure canCopy and canSave directly on JsonExportCapability.
  • Breaking: remove the editor-owned JsonMap alias. Use Map<String, Object?> or a domain-owned alias where needed.
  • Adopt the narrowed NodeEditingX runtime editing surface.
  • No intended editor, rendering, preparation, or export behavior changes.

0.8.0 #

  • Breaking: replace the split EditorExports and PngOutputPort PNG contracts with one host-owned PngExportPort.
  • Pass both the canonical editable scene and the prepared render scene to PNG export hosts.
  • Move final PNG resource preparation, rendering, policy, and output ownership behind the host export port.
  • Keep scene JSON export based on the canonical editable scene.
  • Update the runnable example to demonstrate host-owned PNG rendering and sharing through PngExportPort.

0.7.0 #

  • Breaking: require canvas_core 0.7.x.
  • Breaking: require canvas_renderer_flutter 0.6.x.
  • Support the explicit component behavior version and data envelope introduced by canvas_core 0.7.0.

0.6.0 #

  • Breaking: remove the redundant EditorActionIds.duplicateGroup and EditorActionIds.deleteGroup actions.
  • Breaking: require EditorActionDispatcher to receive a non-null EditorActionContext.
  • Keep the generic Duplicate and Delete actions working for groups and leaf nodes.

0.5.0 #

  • Breaking: require canvas_core 0.6.x and canvas_renderer_flutter 0.5.x.
  • Breaking: replace EditorExtension.renderBuilder and StaticEditorExtension.renderBuilder with scenePreparer.
  • Breaking: reject extension compositions with more than one non-null ScenePreparer by throwing StateError.
  • Breaking: change EditorExports.renderPng() to accept a typed preparedScene instead of scene JSON.
  • Resolve source documents through EditorDocumentAdapter, apply optional scene preparation once, and then call CanvasRenderPipeline.build().
  • Preserve canonical editable scenes for editing, history, persistence, and scene JSON export while using prepared runtime scenes for drawing and PNG export.
  • Remove the PNG scene JSON encode/decode round trip.
  • Consume the CanvasViewportTransform returned directly by CanvasViewportPlanner.plan().

0.4.0 #

  • Breaking: require canvas_core 0.5.x and canvas_renderer_flutter 0.4.x.
  • Use one FlutterTextPipeline for both core text measurement and Flutter text painting.
  • Remove the editor's separate FlutterTextMeasurer and session-long core text measurement cache.
  • Clear cached text layouts after new fonts load and before scheduling layout invalidation.
  • Dispose the editor-owned text pipeline when the editor session is destroyed.

0.3.1 #

  • Use FlutterImagePool as the editor's single image and intrinsic-state owner.
  • Remove duplicate image-intrinsics lifecycle management.
  • Require canvas_renderer_flutter 0.3.x.

0.3.0 #

  • Breaking: remove EditorExportFit and use the shared CanvasFit type from canvas_core.
  • Keep the default export fit as CanvasFit.contain.

0.2.0 #

  • Breaking: require canvas_core 0.4.x and canvas_renderer_flutter 0.2.x.
  • Preserve fractional letter spacing through editing and history.
  • Use quarter-pixel letter-spacing controls in the inspector.

0.1.1 #

  • Made image replacement actions responsive in narrow inspector layouts.
  • Added compact Gallery and Camera actions with enlarged-text coverage.

0.1.0 #

  • Initial public release.
  • Added the turnkey CanvasSceneEditor embedding API.
  • Added selection, movement, inspection, layers, undo and redo.
  • Added extension points for custom documents, rendering, fields, actions, and editor chrome.
  • Added optional image import, PNG export, and JSON export capabilities.
  • Added English-language editor UI.
0
likes
160
points
833
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Complete Flutter scene editor for canvas_core documents with turnkey UI and composable editing, asset, image-import, image-tools, and export capabilities.

Repository (GitHub)
View/report issues

Topics

#canvas #editor #flutter #graphics

License

Apache-2.0 (license)

Dependencies

canvas_core, canvas_renderer_flutter, flutter, nested, provider, vector_math

More

Packages that depend on canvas_editor_flutter