Compare
fluera_canvas vs the alternatives.
Most Flutter drawing packages solve a narrow slice of the problem. Pick the smallest tool that fits — we'd rather send you to scribble or perfect_freehand than watch you fight an engine you don't need.
Feature matrix
| Feature | fluera_canvas | flutter_painter | scribble | perfect_freehand | CustomPaint |
|---|---|---|---|---|---|
| Infinite canvas (pan/zoom/rotate) | ✓ | — | — | — | DIY |
| Camera physics (spring, momentum) | ✓ | — | — | — | DIY |
| Pressure-sensitive input | ✓ | — | ✓ | input only | DIY |
| Stylus tilt + prediction (iOS) | ✓ | — | — | — | DIY |
| Palm rejection | ✓ pluggable | — | basic | — | DIY |
| Scene graph (spatial index) | ✓ R-tree | — | — | — | DIY |
| Undo/redo | ✓ delta-tracked | ✓ | ✓ | — | DIY |
| Export (PNG / SVG / PDF) | ✓ PNG·JPEG·WebP·SVG | raster only | raster only | — | DIY |
| GPU native live-stroke | Vulkan / Metal | — | — | — | — |
| Platforms | iOS · Android · macOS · Windows · Linux · Web | all Flutter | all Flutter | all Flutter | all Flutter |
| License | MIT | MIT | MIT | MIT | built-in |
When to pick which
None of these are bad. They're built for different scopes. Here's the short take — read it and pick the smallest one that solves your problem.
perfect_freehand
Open ↗The stroke algorithm, nothing else.
A port of steveruizok's beautiful pressure-aware stroke smoothing. If you already have a canvas, camera and scene management, and you only need high-quality stroke shapes, this is what you want. Many of fluera_canvas's rendering internals take inspiration from it.
Pick Use if you have an existing drawing app and want better-looking strokes.
scribble
Open ↗A clean signature pad.
Excellent for signatures, quick sketches, single-page drawing surfaces. Bounded canvas, simple stroke, minimal dependencies, mobile-first. No infinite canvas, no scene graph, no camera transforms.
Pick Use if your canvas fits on one screen and the user draws then saves.
flutter_painter
Open ↗Vector tools on a fixed surface.
Pen, shapes, text, image overlay on a bounded painter. Good for photo annotation, simple diagram editing. Not built for long sessions, thousands of nodes, or real stylus fidelity.
Pick Use for photo annotation or quick diagram editing with 10-50 elements.
Raw CustomPaint
Open ↗The Flutter primitive.
Everything above is eventually built on CustomPaint. Rolling your own gives full control — but you'll spend weeks on camera math, input smoothing, hit testing, viewport culling. That's the work fluera_canvas packages up.
Pick Use if your needs are narrow enough that a packaged SDK is overkill.
When to pick fluera_canvas
You want a real drawing surface.
- ✓Your canvas is the product, not a feature. Users spend minutes or hours on it, not seconds.
- ✓You need infinite pan/zoom with camera physics that feel native, not DIY.
- ✓Real stylus support matters — pressure, tilt, prediction, hover, palm rejection that actually works.
- ✓You'll hit the scene-graph limit. Thousands of elements, viewport culling, hit testing in O(log n).
- ✓60 FPS on mid-range Android without handing off to WebGL or a separate app.