ui_animations_pro 0.1.0
ui_animations_pro: ^0.1.0 copied to clipboard
ui_animations_pro — production-grade cinematic UI Animations framework for Flutter. Plugin-based Transitions, Composable Choreographer, Timeline Sequencer, Spring Physics Engine, Performance Monitor, [...]
Changelog #
All notable changes to ui_animations_pro will be documented in this file.
The format follows Keep a Changelog and this project adheres to Semantic Versioning.
0.1.0 — 2026-05-07 #
Added — Core layer #
AnimationsProsingleton façade withinitialize()/dispose()lifecycleAnimationsConfig— fully injectable,copyWith-friendly configurationAnimationsExceptionhierarchy — 8 typed exceptions (TransitionNotFoundException,SceneNotFoundException,TimelineException,CurveException,PhysicsException,FrameBudgetExceededException,HandleDisposedException,InvalidStepException)MotionHandle— full playback control:play(),pause(),resume(),seek(),cancel(),restart(),dispose()MotionStateenum —idle,playing,paused,reversing,completed,dismissed,cancelled,disposedMotionValue<T>— typed reactive wrapper aroundAnimation<T>withmap()transformAnimationEventhierarchy —SceneStartedEvent,SceneCompletedEvent,ScenePausedEvent,SceneResumedEvent,SceneCancelledEvent,StepProgressEvent,FrameDropEventAnimatablePropertyenum — 22 typed properties withisExpensive/is3DextensionsInterpolators—lerpDouble,lerpInt,lerpOffset,lerpSize,lerpColor,lerpRect,lerpLog,lerpAngleTweenFactory— typedTween<T>builders includingcustom<T>with user-supplied lerp functionMotionDescriptor— scene metadata carrier
Added — Choreography layer #
Scene— immutable, composable DSL:.then(),.step(),.sequence(),.parallel(),.stagger(),.delay(),.loop(),.repeat()Timeline— compiled, immutable snapshot of aSceneTimelineCompiler— recursive flatten with absolutestart/endtiming for all step typesChoreographer— orchestrator: compile, acquire tickers, createMotionHandle, broadcast events, cache timelines- 8
ChoreoStepimplementations:SingleStep— one transition on one targetSequenceStep— end-to-end sequential stepsParallelStep— simultaneous stepsStaggerStep— progressive delay between stepsDelayStep— silent timeline pauseLoopStep— infinite loop with optional ping-pongRepeatStep— N-times repeat with optional ping-pongConditionalStep— runtimepredicate → ifTrue / ifFalsebranch
Added — Transition layer #
TransitionPluginabstract contract withbuild()/buildReverse()TransitionRegistry— runtime plugin map withregister(),lookup(),has(),all- 12 built-in plugins (barrel:
package:ui_animations_pro/transitions.dart):FadeTransitionPlugin— opacity 0→1SlideTransitionPlugin— directional slide (up, down, left, right) with fractional distanceScaleTransitionPlugin— scale from/to with alignment controlRotateTransitionPlugin— full-turn rotationSpringTransitionPlugin— physics spring scale + fade comboFlip3DTransitionPlugin— perspective 3D flip on X or Y axisBlurTransitionPlugin—ImageFilter.blursigma 0→max (expensive)MorphTransitionPlugin—borderRadius+colorinterpolationParallaxTransitionPlugin— depth-offset translateShimmerTransitionPlugin—ShaderMaskhighlight sweepRippleTransitionPlugin— expanding circular overlay (expensive)LiquidTransitionPlugin— sinusoidalClipPathwipe (expensive)
Added — Curves layer #
CurveLibrary— 15 named presets: Apple, Material 3 (emphasized / decelerate / accelerate / standard), Stripe, Linear, Vercel, Overshoot, Anticipate, AnticipateOvershoot, Elastic, Bounce, SlowStart, SlowEnd, SmoothStartEndSpringCurve—Curvebacked bySpringSimulation:gentle(),wobbly(),stiff(),slow(),molasses()+ custom constructorElasticCurve— configurable amplitude, period, and in/out/inOut modesBackCurve— overshoot / undershoot withBackKind(input, out, inOut)BezierEditor— buildCubicfrom 4 control points; parse CSScubic-bezier(…)stringsCustomCurve— delegate anydouble Function(double t)as aCurve
Added — Physics layer (barrel: package:ui_animations_pro/physics.dart) #
PhysicsSimulator— abstract contract:position(t),velocity(t),isDone(t)SpringSim— mass-spring-damper: under-damped, critically-damped, over-damped branchesFrictionSim— exponential deceleration (fling / scroll)GravitySim— uniformly accelerated motion with configurableendboundaryMagneticSim— inverse-square pull / snap towards targetDampingPolicy— helpers:computeDamping(),isUnderdamped(),isOverdamped(),isCritical()
Added — Engine layer #
MotionEngine— headless (no UI):sampleAt(scene, ms),compile(scene),samplePhysics(sim)TickerProviderPool— reusableTickerProviderpool; grows dynamically beyondcapacityFrameBudgeter—SchedulerBinding.addTimingsCallbackper-frame budget monitor withonDropcallbackPerformanceMonitor— sampled FPSStream<double>via periodicTimerAnimationScheduler— limits concurrentMotionHandlecount tomaxConcurrentLifecycleObserver—WidgetsBindingObserverthat pauses/resumes all active scenes on app lifecycle changes
Added — Widget layer #
MotionWidget— drop-in animated wrapper:transition,duration,curve,autoPlay,params,onCompletedMotionBuilder—AnimatedBuilder-style widget observing aMotionHandleAnimatedScene— declarative scene playback widget withautoPlay+onReadyStaggerList—ColumnorRowwith per-itemFuture.delayedstagger; supports both axesHeroMotion— enhancedHerowith customflightShuttleBuilder,CurvedRectTween, and fade optionMorphContainer— statefulAnimationController-drivenDecorationTween+ size interpolationParallaxView— scroll-driven or pointer-driven depth layers viaList<ParallaxLayer>; smoothAnimationControllerinterpolationShimmerBox—ShaderMaskshimmer with 4 directions (LTR, RTL, TTB, BTT);ShimmerBox.rectfactory;enabledtoggleRevealWidget—ClipPathclip-path reveal in 6 directions: left, right, top, bottom, center, radial
Added — Route layer #
MotionPageRoute<T>—PageRouteBuilderaccepting anyTransitionPluginSharedAxisRoute<T>— X / Y / Z shared-axis slideFadeThroughRoute<T>— fade-through cross-fadeContainerTransformRoute<T>— scale 0.85→1.0 container transformRouteAdapter— staticpush<T>helper
Added — Gesture layer #
GestureMotion— drag →progress(0.0–1.0) builder; vertical or horizontal axis;onReleasecallbackSwipeDismiss— horizontal swipe pastthreshold→ animate out +onDismissedPinchZoomMotion— two-finger pinch withminScale/maxScaleclampPanParallax— mouse/touch hover offset withMouseRegion+AnimatedContainersmoothingVelocityTracker— 8-sample sliding window velocity estimator
Added — Accessibility layer #
ReduceMotionPolicy—InheritedWidgetreadingWidgetsBinding.accessibilityFeatures.disableAnimations; 4 behaviors:disable,crossFade,scaleDuration,ignoreReduceMotionPolicyData— immutable snapshot withapplyTo(Duration)andshouldSimplifyAccessibilityBridge—Semanticswrapper withlabel,hint,liveRegion,focusable; policy-awarereducedChildfallbackMotionAwareBuilder— builder receiving(context, policyData, resolvedDuration)SemanticAnnouncer— staticannounce(),polite(),assertive()viaSemanticsServiceAnimationAnnouncer— widget firing announcements atforward,completed,dismissedmilestones
Added — Integration layer #
MotionProvider—StatefulWidget+_MotionInherited: providesMotionEngine+AnimationsConfigto the tree;MotionProvider.of(context)/maybeOf(context)MotionObserver— event bus:watch(tag, animation)/unwatch(tag);eventsbroadcastStream<MotionEvent>AnimationDebouncer— widget debouncing booleanactiveprop before forwarding toAnimationControllerDebouncer— pure Dart timer-based debounce withrun(),cancel(),dispose(),isPendingThrottler— leading-edge throttle withrun(),reset()ThemeBridge—ThemeDataadapter exposing durations, curves, colours, shadows, border radii, spacing, stagger helpers
Added — Barrels #
lib/ui_animations_pro.dart— main public barrel (all layers)lib/transitions.dart— 12 transition pluginslib/physics.dart— 5 physics simulators + policy
Added — Tests #
test/unit/animations_exception_test.dart— 8 exception typestest/unit/motion_state_test.dart—isActive,isFinished,canResumetest/unit/curve_library_test.dart— CurveLibrary, SpringCurve, ElasticCurve, BackCurve, BezierEditor, CustomCurvetest/unit/physics_test.dart— SpringSim (under/critical/overdamped), FrictionSim, GravitySim, MagneticSim, DampingPolicytest/unit/timeline_compiler_test.dart— single, sequence, parallel, stagger, repeat, nested, startOffset, compiletest/unit/transition_registry_test.dart— lookup, register, overwrite, isExpensive; widget tests for Fade, Slide, Scaletest/unit/interpolators_test.dart— all Interpolators + TweenFactory + AnimatableProperty extensionstest/unit/frame_budgeter_test.dart— FrameBudgeter, PerformanceMonitor, TickerProviderPooltest/unit/debouncer_test.dart— Debouncer, Throttlertest/widget/motion_widget_test.dart— MotionWidget, StaggerList, ShimmerBox, RevealWidget, MorphContainer, HeroMotion, ParallaxViewtest/widget/gesture_widget_test.dart— GestureMotion, SwipeDismiss, PinchZoomMotion, PanParallax, VelocityTrackertest/widget/route_widget_test.dart— all 5 route types + RouteAdaptertest/integration/scene_playback_test.dart— initialisation, Scene DSL, named registry, Choreographer, MotionHandle, MotionEngine headless
Added — Example app #
example/motion_demo/lib/main.dart— full showcase:- Transition grid (all 12 plugins, tap to animate)
- Stagger list (5 items, spring, show/hide toggle)
- Physics demo (Spring wobbly/stiff/molasses/elastic animated balls)
- Curves demo (6 curves side-by-side progress bars)
- Shimmer demo (skeleton loader with loading/loaded toggle)
- Reveal demo (all 6 directions, direction picker chips)
- Morph demo (tap to expand/collapse container)
- Gesture demo (drag progress, pinch-zoom, pan parallax)
- Routes demo (6 navigation buttons, each with a different route)
- Accessibility demo (MotionAwareBuilder + AccessibilityBridge + policy display)
- Live FPS badge in app bar
[Unreleased] #
Planned — v0.2.0 #
build_runnercode generation:@Scene,@AnimateProperty,@StaggerGroupannotations- Auto-generated
SceneRegistryfrom annotated classes
Planned — v0.3.0 #
PathAnimationEngine— animate along SVGPathwith dash-offset and stroke progressPathFollowerwidget
Planned — v0.4.0 #
ParticleSystem— confetti, smoke, stars, fire emitter at 60 fps stableParticleEmitterwidget
Planned — v0.5.0 #
LottieBridge— import.lottieJSON as nativeSceneRiveBridge— import.rivas nativeScene; scrubable and composable
Planned — v0.6.0 #
SkeletonAutoLoader— auto-detect loading widgets; apply matched-shape shimmer automatically
Planned — v0.7.0 #
LiveTimelineEditor— in-app drag-and-drop timeline editor with real-time preview and Dart code export
Planned — v0.8.0 #
WebMotionExporter— exportSceneas CSS animations / WAAPI keyframes for Flutter Web SEO
Planned — v1.0.0 #
MotionGoldenTester— pixel-by-pixel animation frame regression testing frameworkMultiWindowSync— synchronised animations across Flutter desktop windows- Stable API declaration; full pub.dev publication