mural 1.0.0 copy "mural: ^1.0.0" to clipboard
mural: ^1.0.0 copied to clipboard

Capture any Flutter widget as an image, at any size. Screenshot huge lists, full pages, and even unseen widgets — past the GPU texture limit, always crisp, in constant memory.

Changelog #

1.0.0 #

First release — capture any Flutter widget as an image, at any size: offscreen widgets, on-screen snapshots, and captures beyond the GPU texture limit (flutter/flutter#118024), streamed in constant memory.

  • Capture: three doors on one Mural facade — capture (offscreen, staged with the caller's theme and text direction), captureBoundary (on-screen, snapshotted synchronously at the call), captureInto (streams into any Sink<List<int>>)
  • Any size: captures in strips under a GPU limit learned from the engine's own responses; output size bounded by neither the GPU nor memory
  • Fidelity: strip output byte-identical to a one-shot render — strip origins aligned to the engines' 8x8 dither matrix, bleed margin around interior seams for shadows and blurs; verified by a differential test against the framework's own rasterization
  • Memory: peak working memory is one band plus one strip readback, set by memoryLimitBytes, independent of output size
  • Readiness: one deterministic signal, MuralStage.ready(context) — no timer options
  • Tasks: every door returns a MuralTask — awaitable, live progress (sealed MuralProgress family), cooperative cancellation
  • Output: in-package streaming PNG (RFC 2083/1950/1951) encoded off the UI thread (isolate on native, CompressionStream on web); raw straight-alpha RGBA as the escape hatch
  • Errors: sealed MuralError family — every failure typed and named, including MuralBudgetError when the memory budget and bleed cannot form a plan
  • Platforms: Android, iOS, macOS, Windows, Linux, web — one codebase, zero runtime dependencies
  • SDK: requires Dart >=3.11.0
Commits since initial (8)
  • 5a9e74a release: v1.0.0
  • 50050fe Merge pull request #2 from whuppi/dev
  • 84f75d8 docs: cross-link device_io for saving/sharing the captured bytes
  • 5beb774 ci: bump dorny/paths-filter from 4.0.1 to 4.0.2 in the actions group across 1 directory (#1)
  • d72aa28 ci: restore byte-parity with the shared workflow stubs
  • 1cbc810 ci: touch dispatch-only workflows so GitHub registers them
  • 369c19b chore: nudge workflow registration for dispatch-only workflows
  • 459bd56 chore: initial import of mural from the whuppi workspace
1
likes
160
points
125
downloads

Documentation

API reference

Publisher

verified publisherwhuppi.com

Weekly Downloads

Capture any Flutter widget as an image, at any size. Screenshot huge lists, full pages, and even unseen widgets — past the GPU texture limit, always crisp, in constant memory.

Repository (GitHub)
View/report issues
Contributing

Topics

#screenshot #widget-to-image #capture #image #cross-platform

License

MIT (license)

Dependencies

flutter

More

Packages that depend on mural