Flutter Advanced Canvas Editor
A Flutter package for creating, editing, and exporting canvas-based artwork with advanced features.
Preview
Features
- Photoshop-style layer system — create, delete, duplicate, rename, and reorder layers
- Per-layer visibility, opacity, and lock controls
- Freehand drawing and erasing
- Drag-and-drop widget components onto the canvas
- Global undo / redo (snapshot-based, covers all layers)
- Export the canvas as a PNG image
- Works on all platforms (Android, iOS, Web, macOS, Windows, Linux)
Installation
dependencies:
flutter_advanced_canvas_editor: ^2.0.3
Quick start
import 'package:flutter_advanced_canvas_editor/flutter_advanced_canvas_editor.dart';
// 1. Create a controller
final controller = CanvasController(
(pngBytes) => savePng(pngBytes), // called on exportCanvas()
);
// 2. Listen to state changes and rebuild your UI
controller.setOnStateChanged((isDrawing, isErasing) => setState(() {}));
// 3. Drop CanvasWidget into your widget tree
CanvasWidget(controller: controller)
For a complete working example with a layer panel, draggable items, and action buttons see the example tab.
Core API
| Method | Description |
|---|---|
enableDrawing() / enableErasing() |
Enter draw / erase mode |
disableDrawingErasing() |
Exit both modes |
undo() / redo() |
Step through history |
clearAll() |
Clear all unlocked layers |
exportCanvas() |
Export to PNG (fires the export callback) |
createLayer({name, opacity, locked}) |
Add a new layer, returns its ID |
deleteLayer(index) |
Remove a layer |
setCurrentLayer(index) |
Switch the active layer |
setLayerVisibility(index, bool) |
Show / hide a layer |
setLayerOpacity(index, double) |
Set layer opacity (0.0 – 1.0) |
setLayerLocked(index, bool) |
Lock / unlock a layer |
duplicateLayer(index) |
Duplicate a layer |
mergeLayerDown(index) |
Merge a layer into the one below |
addComponent(widget, offset) |
Place a widget on the canvas |
Contributing
Contributions are welcome! Feel free to open issues and pull requests.
License
MIT — see the LICENSE file for details.
Libraries
- flutter_advanced_canvas_editor
- A powerful Flutter canvas editor with Photoshop-style layers, freehand drawing, drag-and-drop components, undo/redo, and PNG export.