CanvasController class
Controller for Flint Canvas drawing.
This server-safe implementation stores retained objects but does not draw. Browser builds bind the controller to the rendered canvas element.
Constructors
- CanvasController({CanvasSelectCallback? onSelect, CanvasChangeCallback? onChange, CanvasObjectsCallback? onMove, CanvasObjectsCallback? onResize, CanvasObjectsCallback? onRotate, CanvasTextEditCallback? onTextEdit, CanvasPointerCallback? onPointerDown, CanvasPointerCallback? onPointerUp, CanvasPointerCallback? onHover, CanvasPointerCallback? onDragStart, CanvasPointerCallback? onDragEnd, CanvasPointerCallback? onResizeStart, CanvasPointerCallback? onResizeEnd, CanvasPointerCallback? onRotateStart, CanvasPointerCallback? onRotateEnd, CanvasHistoryCallback? onUndo, CanvasHistoryCallback? onRedo, bool snapToGrid = false, double gridSize = 8, bool snapToObjects = false, double snapThreshold = 6, int maxHistoryEntries = 100, CanvasObjectConstraints constraints = const CanvasObjectConstraints(), bool showGrid = false, bool showRulers = false, bool showSnapGuides = true})
- Creates a canvas controller.
Properties
- canRedo → bool
-
Whether redo history is available.
no setter
- canUndo → bool
-
Whether undo history is available.
no setter
- constraints → CanvasObjectConstraints
-
Object editing constraints.
final
- gridSize → double
-
Grid size used by snapSelectedToGrid and drag snapping.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- isAttached → bool
-
Whether the controller is attached to a browser canvas.
no setter
-
layerItems
→ List<
CanvasLayerItem> -
Layer-panel view of retained objects, ordered from front to back.
no setter
- maxHistoryEntries → int
-
Maximum undo or redo entries to keep.
final
-
objects
→ List<
CanvasObject> -
Retained canvas objects.
no setter
- onChange → CanvasChangeCallback?
-
Fires after retained canvas scene data changes.
final
- onDragEnd → CanvasPointerCallback?
-
Fires when object dragging ends.
final
- onDragStart → CanvasPointerCallback?
-
Fires when object dragging starts.
final
- onHover → CanvasPointerCallback?
-
Fires when the hovered object changes.
final
- onMove → CanvasObjectsCallback?
-
Fires after selected objects move.
final
- onPointerDown → CanvasPointerCallback?
-
Fires on browser pointer down.
final
- onPointerUp → CanvasPointerCallback?
-
Fires on browser pointer up.
final
- onRedo → CanvasChangeCallback?
-
Fires after redo succeeds.
final
- onResize → CanvasObjectsCallback?
-
Fires after selected objects resize.
final
- onResizeEnd → CanvasPointerCallback?
-
Fires when selection-handle resizing ends.
final
- onResizeStart → CanvasPointerCallback?
-
Fires when selection-handle resizing starts.
final
- onRotate → CanvasObjectsCallback?
-
Fires after selected objects rotate.
final
- onRotateEnd → CanvasPointerCallback?
-
Fires when selection-handle rotation ends.
final
- onRotateStart → CanvasPointerCallback?
-
Fires when selection-handle rotation starts.
final
- onSelect → CanvasObjectsCallback?
-
Fires when selected objects change.
final
- onTextEdit → CanvasTextEditCallback?
-
Optional text edit provider used by browser double-click editing.
final
- onUndo → CanvasChangeCallback?
-
Fires after undo succeeds.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- selectedBounds → CanvasBounds?
-
Bounds for the currently selected object.
no setter
- selectedObject → CanvasObject?
-
Currently selected object.
no setter
- selectedObjectId → String?
-
Currently selected object id.
no setter
-
selectedObjectIds
→ List<
String> -
Currently selected object ids.
no setter
-
selectedObjects
→ List<
CanvasObject> -
Currently selected objects.
no setter
- showGrid → bool
-
Whether browser canvas builds should draw a grid.
final
- showRulers → bool
-
Whether browser canvas builds should draw rulers.
final
- showSnapGuides → bool
-
Whether browser canvas builds should draw snap guides.
final
-
snapGuides
→ List<
CanvasGuide> -
Active snap guides from the latest snap operation.
no setter
- snapThreshold → double
-
Distance threshold for object edge/center snapping.
final
- snapToGrid → bool
-
Whether movement should snap selected objects to gridSize.
final
- snapToObjects → bool
-
Whether movement should snap selected objects to other object edges/centers.
final
Methods
-
add(
CanvasObject object) → void - Adds an object to the retained canvas scene.
-
addCircle(
CanvasCircle circle) → void - Adds a circle object.
-
addImage(
CanvasImageObject image) → void - Adds an image object.
-
addLine(
CanvasLine line) → void - Adds a line object.
-
addRect(
CanvasRect rect) → void - Adds a rectangle object.
-
addText(
CanvasTextObject text) → void - Adds a text object.
-
alignSelected(
CanvasAlignment alignment) → bool - Aligns selected objects inside the selection bounds.
-
beginHistoryBatch(
) → void - Starts batching subsequent changes into one undo entry.
-
bringForward(
String id) → bool - Moves an object one step forward in z order.
-
bringToFront(
String id) → bool - Moves an object to the front of z order.
-
cancelHistoryBatch(
) → void - Cancels an active history batch without adding an undo entry.
-
clear(
) → void - Removes all retained objects and clears the canvas.
-
clearHistory(
) → void - Clears undo and redo history.
-
copySelected(
) → bool - Copies the selected object into the controller clipboard.
-
deleteSelected(
) → bool - Deletes the selected object.
-
detach(
) → void - Detaches from the browser canvas.
-
drawCircle(
CanvasCircle circle) → void - Draws a circle immediately.
-
drawImage(
CanvasImageObject image) → void - Draws an image immediately.
-
drawLine(
CanvasLine line) → void - Draws a line immediately.
-
drawRect(
CanvasRect rect) → void - Draws a rectangle immediately.
-
drawText(
CanvasTextObject text) → void - Draws text immediately.
-
duplicateSceneJson(
) → Map< String, Object?> - Creates a duplicate JSON snapshot of the current scene.
-
endHistoryBatch(
) → void - Finishes a history batch.
-
handleKeyboardCommand(
String key, {bool control = false, bool meta = false, bool shift = false}) → bool - Handles a keyboard command for the selected canvas object.
-
hitTest(
double x, double y) → CanvasObject? -
Returns the topmost object at
x,y. -
importBackendJson(
Map< String, Object?> json) → void - Loads scene JSON from a saved backend payload.
-
loadJson(
Map< String, Object?> json) → void - Loads retained objects from JSON-friendly scene data.
-
moveBy(
String id, double dx, double dy) → bool -
Moves an object by
dx,dy. -
moveSelectedBy(
double dx, double dy) → bool -
Moves the selected object by
dx,dy. -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
nudgeSelected(
{double dx = 0, double dy = 0, bool largeStep = false}) → bool - Moves the selected object with keyboard-style step sizes.
-
objectById(
String id) → CanvasObject? - Finds a retained object by id.
-
pasteCopied(
{double dx = 12, double dy = 12}) → List< CanvasObject> - Pastes copied objects and selects the pasted objects.
-
redo(
) → bool - Restores the next scene state after undo.
-
remove(
String id) → bool - Removes a retained object by id.
-
renameObjectId(
String currentId, String nextId) → bool - Renames an object's id for layer panels and app-level references.
-
render(
) → void - Redraws the retained scene.
-
resizeBy(
String id, double dw, double dh) → bool -
Resizes an object by
dw,dh. -
resizeSelectedBy(
double dw, double dh) → bool -
Resizes the selected object by
dw,dh. -
resizeSelectedFromHandle(
CanvasSelectionHandle handle, double dx, double dy) → bool -
Resizes the selected object from a visible selection
handle. -
rotateBy(
String id, double degrees) → bool -
Rotates an object by
degrees. -
rotateSelectedBy(
double degrees) → bool -
Rotates the selected object by
degrees. -
select(
String? id) → bool - Selects an object by id.
-
selectAt(
double x, double y) → CanvasObject? -
Selects the topmost object at
x,y. -
selectedToJson(
) → Map< String, Object?> - Exports selected retained objects as JSON-friendly scene data.
-
selectInBounds(
CanvasBounds bounds) → bool -
Selects all visible objects fully contained in
bounds. -
selectMany(
Iterable< String> ids) → bool - Selects multiple objects by id.
-
sendBackward(
String id) → bool - Moves an object one step backward in z order.
-
sendToBack(
String id) → bool - Moves an object to the back of z order.
-
setCanvasSize(
double width, double height) → void - Updates viewport dimensions for canvas-bound constraints.
-
setObjectHidden(
String id, ) → bool - Hides or shows an object.
-
setObjectLocked(
String id, bool locked) → bool - Locks or unlocks an object.
-
setObjectName(
String id, String? name) → bool - Sets a display name for an object.
-
setRotation(
String id, double degrees) → bool - Sets an object's rotation in degrees.
-
setSelectedFont(
{String? family, double? size, String? cssFont}) → bool - Updates font family/size for selected text objects.
-
setSelectedHidden(
) → bool - Hides or shows selected objects.
-
setSelectedLocked(
bool locked) → bool - Locks or unlocks selected objects.
-
setSelectedRotation(
double degrees) → bool -
Sets all selected objects to
degreesrotation. -
snapSelectedToGrid(
[double? size]) → bool - Snaps selected objects to the nearest grid coordinates.
-
snapSelectedToObjects(
{double? threshold}) → bool - Snaps selected objects to nearby visible object edges or centers.
-
styleSelected(
{String? fill, CanvasImagePattern? pattern, String? stroke, double? lineWidth, String? font, bool clearFill = false, bool clearPattern = false, bool clearStroke = false}) → bool - Updates selected object style fields while preserving unspecified paint.
-
toDataUrl(
{String type = 'image/png', double? quality}) → String - Exports the canvas to a data URL.
-
toggleSelection(
String id) → bool -
Adds or removes
idfrom the current selection. -
toggleSelectionAt(
double x, double y) → CanvasObject? -
Toggles the topmost object at
x,yin the current selection. -
toJson(
) → Map< String, Object?> - Exports retained objects as JSON-friendly scene data.
-
toString(
) → String -
A string representation of this object.
inherited
-
undo(
) → bool - Restores the previous scene state.
-
update(
String id, CanvasObject object) → bool -
Replaces the object with
id. -
updateObjectPaint(
String id, CanvasPaint paint) → bool - Updates paint on one object.
-
updateSelectedPaint(
CanvasPaint paint) → bool - Updates paint on selected, unlocked objects.
-
updateSelectedText(
String text) → bool - Updates the selected text object when exactly one text object is selected.
-
updateText(
String id, String text) → bool - Updates one text object's text.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited