animate_kit 0.6.0
animate_kit: ^0.6.0 copied to clipboard
State-driven Flutter animation primitives built on flutter_animate. Respects system reduce-motion. Includes entrance, opacity, surface, and skeleton shimmer widgets.
0.6.0 #
New widgets (all respect MediaQuery.disableAnimations, follow the
package's semantics and repaint-isolation standards):
BlurEntrance: fade + blur-to-sharp on mount.FlipEntrance: fade + 3D flip in on mount (FlipAxishorizontal/vertical).FlipCard: state-driven 3D flip between a front and back face.AnimatedBlur: state-driven Gaussian blur toggle (spoilers, focus effects); skips the filter entirely when crisp.FadeSwitcher: cross-fade + subtle scale between changing children — anAnimatedSwitcherwith production defaults and reduce-motion guard.TapScale: press-down scale feedback wrapping aGestureDetector.SpinAnimation: repeating continuous rotation for loading/sync indicators, repaint-isolated.LoadingDots: staggered "typing indicator" dots driven by a single shared controller (dots can't drift out of phase), repaint-isolated, no ticker under reduce-motion.AnimatedProgressBar: linear counterpart toAnimatedProgressRing, with the same single-announcement semantics andsemanticsLabel.
0.5.0 #
Production hardening — performance, robustness, and accessibility.
Performance:
- All widgets now use aspect-scoped
MediaQuery.disableAnimationsOfinstead ofMediaQuery.of, so they no longer rebuild on unrelated MediaQuery changes (keyboard, resize, padding). PulseAnimation,BounceAnimation, andSkeletonBoxwrap their endlessly repeating animations in aRepaintBoundary, isolating per-frame repaints from the surrounding subtree.CountUpText,TypewriterText, andAnimatedProgressRingno longer run their internal ticker when reduce-motion is enabled, and snap correctly if reduce-motion toggles mid-animation.
Robustness:
TypewriterTextnow reveals text by grapheme cluster — emoji, combining marks, and other multi-code-unit characters are never split mid-glyph.- Range-checked parameters (
minOpacity,minScale, progressvalue) are defensively clamped at render time, since constructor asserts are stripped in release builds. CountUpText/AnimatedProgressRingnow pick updurationchanges that arrive without a simultaneous value change.
Accessibility:
CountUpTextandTypewriterTextannounce only the final value / full text to screen readers instead of every animation frame.AnimatedProgressRingexposes a single semantic progress value (e.g. "70%") — the background track no longer leaks a "100%" announcement. Added optionalsemanticsLabelparameter.
Tooling:
- Added
analysis_options.yaml(flutter_lints was previously inactive). - Added GitHub Actions CI: format check, analyze (fatal-infos), tests, and
pub publish --dry-runvalidation. - Codebase is now
dart formatclean.
0.4.0 #
New widgets (all respect MediaQuery.disableAnimations):
RotateEntrance: fade + rotate in on mount.ExpandableSection: state-driven expand/collapse of a child's height, keeping the child mounted (and its state preserved) while collapsed.BounceAnimation: repeating vertical bounce for attention effects.AnimatedProgressRing: animates a circular progress ring to its value; reruns on change, with an optional centered child (e.g. a percentage label).
0.3.0 #
New widgets (all respect MediaQuery.disableAnimations):
ScaleEntrance: fade + scale in on mount.StaggeredList: column of children with cascadingFadeEntrancedelays.ScaleToggle: state-driven scale betweenminScaleand1.0.SlideToggle: state-driven slide betweenhiddenOffsetandOffset.zero.PulseAnimation: repeating scale + fade pulse for attention effects.ShakeAnimation: horizontal shake replayed whenevertriggerchanges.CountUpText: animates a number to its value; reruns on change.TypewriterText: reveals text character by character with optional delay.
0.2.0 #
FadeEntrance: addeddirectionparameter (FadeSlideDirectionenum —up,down,left,right,none). Defaults toup(backward-compatible).AnimatedVisibility: addedignorePointerWhenHiddenparameter — wraps withIgnorePointerwhenvisibleis false so hidden content can't receive taps.AnimatedSurface: wideneddecorationtype fromBoxDecorationtoDecoration—ShapeDecorationand custom subclasses now animate correctly.SkeletonBox: addedcoloranddurationparameters with sensible defaults.- Added
topics:topubspec.yamlfor pub.dev discoverability. - Added
example/with a runnable demo app showing all four widgets.
0.1.1 #
AnimatedVisibility: fixed first-mount opacity flash by switching fromflutter_animatetarget-based animation toAnimatedOpacity.AnimatedVisibility: fixed asymmetric easing on hide —Curves.easeOutnow applies identically in both directions.AnimatedVisibility: addedassertto clampminOpacityto[0.0, 1.0].- Hardened tests: scoped widget finders, non-vacuous shimmer check, fixed
FadeEntrancedelay assertion.
0.1.0 #
- Initial extraction from sdraw monorepo.
FadeEntrance: fade + slide-Y entrance animation.AnimatedVisibility: state-driven opacity with configurableminOpacity.AnimatedSurface: state-drivenBoxDecorationtransition.SkeletonBox: repeating shimmer for loading placeholder states.- All widgets respect
MediaQuery.disableAnimations.