canvas_editor_flutter 0.19.0
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.xandcanvas_renderer_flutter 0.15.x. - Add path stroke controls and nullable
CanvasFields.pathStroke; exportStrokeEditorfromextensions.dart. Preserve inactive settings and dash values across edits and undo/redo; opacity drags form one undo step. - Breaking:
FieldCodecreaders, fallbacks, and writer values acceptObject?; 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.xandcanvas_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.xandcanvas_renderer_flutter 0.13.x. - Breaking: replace the editor's
RenderSnapshot-based render contract withSceneEvaluation, 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.xandcanvas_renderer_flutter 0.11.x. - Scene JSON exported through the canonical
canvas_coreserialization boundary now includessceneFormatVersion.
0.14.0 #
- Breaking: require
canvas_core 0.11.xandcanvas_renderer_flutter 0.10.x. - Breaking: replace
FieldCodec.commitwith explicit canonical field readers and a commit-freewriteCanonicalscene transform. Presentation reads remain separate throughreadNodeandreadScene. - Add
EditorController.updateField()for canonical read-modify-write field updates. LiteralcommitField()and functionalupdateField()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()withapplySourceEdit(). Source edits must preserve the canonical base scene. - Breaking: remove
EditorDocumentHost.applyEdit(). Canonical base-scene edits remain available throughEditorController.applyEdit()and registered field mutations throughcommitField()/updateField(). - Breaking: replace multi-item editor selection with one nullable
ElementId. RemoveSelectionState,EditorSelectionHost.firstId,selectItems(),clearSelection(), and the correspondingEditorActionContexthelpers. UseEditorSelectionHost.valueandselectItem(ElementId?). - Breaking: replace
EditorController.updateDragMany()withupdateDrag(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 persistedNode.hiddenvalue. - Breaking: remove canvas-object locking from editor interaction and Layers.
Picking and snapping no longer filter locked nodes,
EditorEditsno longer exposessetElementLocked(), and Layers no longer stores or renders lock state. - Remove the built-in object-lock veto from
EditorInteractionPolicy.canMove(). Application-providedcanMoveNodepolicies continue to control movement restrictions. - Route text and icon fill editing through
CanvasAppearance.foregroundwhile 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'sComputedScene. - Own the editor's immutable
History<T>reducer directly instead of importing history fromcanvas_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.dartinteraction entrypoint.
0.13.0 #
- Breaking: require
canvas_core 0.10.xandcanvas_renderer_flutter 0.9.x. - Breaking: replace
CanvasFontAssets,CanvasMediaResolver, andFontDefwith passive runtime resources:FlutterFontLoader,FontPickerItem,IconCatalogPort, andCanvasImageAssetResolver. - Breaking: change
PngExportPortto receive one adapter-resolved, unpreparedCanvasSceneDocumentplusCanvasPngSpec; remove editable/prepared dual-scene PNG arguments andEditorExportSpec. - 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
EditorRuntimetoCanvasEditorSurface, which owns theFlutterImagePoollifecycle. - 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
Interdependency. - Migrate image import and the public example to the batch
CanvasImageAssetResolverboundary and canonicalFlutterCanvasPngRendererflow.
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.xandcanvas_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.imageSourceas 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_coreserialization 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.dartcapability entrypoint. - Add the provider-neutral
BackgroundRemovalPortand typed background-removal results. - Add
backgroundRemovalExtensionfor 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.imageSourcefield 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
InspectorBuilderchain. 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
InspectorSectionBuilderandEditorSurfaceFeatures.inspectorSectionsfor 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.forceDisabledandInspectorFieldRow.disabledReasonOverride; registered field editability now flows throughFieldState.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
kSceneFieldsIdthrough the publicextensions.dartentrypoint.
0.9.0 #
- Breaking: require
canvas_core 0.8.xandcanvas_renderer_flutter 0.7.x. - Breaking: remove
PngExportAvailability; configurecanShareandcanSavedirectly onPngExportCapability. - Breaking: remove
JsonExportAvailability; configurecanCopyandcanSavedirectly onJsonExportCapability. - Breaking: remove the editor-owned
JsonMapalias. UseMap<String, Object?>or a domain-owned alias where needed. - Adopt the narrowed
NodeEditingXruntime editing surface. - No intended editor, rendering, preparation, or export behavior changes.
0.8.0 #
- Breaking: replace the split
EditorExportsandPngOutputPortPNG contracts with one host-ownedPngExportPort. - 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
versionanddataenvelope introduced bycanvas_core 0.7.0.
0.6.0 #
- Breaking: remove the redundant
EditorActionIds.duplicateGroupandEditorActionIds.deleteGroupactions. - Breaking: require
EditorActionDispatcherto receive a non-nullEditorActionContext. - Keep the generic Duplicate and Delete actions working for groups and leaf nodes.
0.5.0 #
- Breaking: require
canvas_core 0.6.xandcanvas_renderer_flutter 0.5.x. - Breaking: replace
EditorExtension.renderBuilderandStaticEditorExtension.renderBuilderwithscenePreparer. - Breaking: reject extension compositions with more than one non-null
ScenePreparerby throwingStateError. - Breaking: change
EditorExports.renderPng()to accept a typedpreparedSceneinstead of scene JSON. - Resolve source documents through
EditorDocumentAdapter, apply optional scene preparation once, and then callCanvasRenderPipeline.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
CanvasViewportTransformreturned directly byCanvasViewportPlanner.plan().
0.4.0 #
- Breaking: require
canvas_core 0.5.xandcanvas_renderer_flutter 0.4.x. - Use one
FlutterTextPipelinefor both core text measurement and Flutter text painting. - Remove the editor's separate
FlutterTextMeasurerand 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
FlutterImagePoolas 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
EditorExportFitand use the sharedCanvasFittype fromcanvas_core. - Keep the default export fit as
CanvasFit.contain.
0.2.0 #
- Breaking: require
canvas_core 0.4.xandcanvas_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
CanvasSceneEditorembedding 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.