NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #2208 most downloaded on pub.dev
Lightweight spritesheet animation widget for Flutter. Grid-based and JSON atlas (TexturePacker, Aseprite) support with named animations, playback modes, and external controller.
Last release 1 months ago
24 Aug 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 5 of 5 stable releases
Nothing withdrawn
no release was ever pulled
5 months old
5 releases · first in 2026
One column per month.
Added SpriteAnimationController.speed, a playback multiplier that scales the whole animation clock. Unlike fps, it also applies to atlas animations wh
SpriteAnimationController.speed, a playback multiplier that scales
the whole animation clock. Unlike fps, it also applies to atlas
animations whose frames carry their own durations, where the frame rate is
fixed by the data and fps is ignored.SpriteAnimationController.repeatCount: play a looping animation a
fixed number of times, then fire onComplete. Null keeps the previous
unlimited behaviour. Changing it resets completedCycles, so a new limit
applies from now rather than counting cycles that already ran.completedCycles and the onCycle callback, which fires on every
wrap of a looping animation with the number completed so far.ci.yml (format, analyze, test), release.yml (tag on version
change) and publish.yml (pub.dev via OIDC). This was the only package in
the workspace without them.example/assets/sprite_demo.png, a generated 8x8 / 64-frame
spritesheet, and pointed the example at it. The example previously
referenced assets/backpack.png, which is gitignored and was never
committed, so the demo could not run from a clone and flutter analyze
warned about the missing asset directory. The gitignore entry is left
alone.Added PlayModeX extension with isForward, isReverse and isPingPong convenience getters on PlayMode.
PlayModeX extension with isForward, isReverse and isPingPong
convenience getters on PlayMode.SpriteAnimationController constructor now validates fps immediately (throws ArgumentError when fps <= 0). Previously the assertion only ran when calle
SpriteAnimationController constructor now validates fps immediately
(throws ArgumentError when fps <= 0). Previously the assertion only
ran when callers later mutated fps through the setter._kMicrosecondsPerSecond, _kMicrosecondsPerMillisecond) inside the
tick accumulator — no behavioural change, just readability.Fix: active ticker assertion on dispose with external controller.
Grid-based spritesheet animation (SpriteAnimation.grid).
SpriteAnimation.grid).SpriteAnimation.atlas) with TexturePacker and Aseprite support.frameTags.SpriteAnimationController with play/pause/stop/goToFrame.SpriteAnimation.precache / precacheAll).CustomPainter(repaint:) — paint-layer-only updates.Your coding agent can read these notes before it upgrades. Set up the MCP server →