felixblaschke/simple_animations
69.0
Adequate · 19 September 2026
2.7k
lines of production code
Dart
with C++
1
measurement over time
What this system is
This system is a Flutter animation library that provides declarative widgets and controller extensions for managing complex animation sequences. It enables developers to define, play, loop, and mirror animations using a modular builder API and a modern MovieTween engine. The package also includes a visual debugging overlay to inspect and control animation timelines during development.
How it got here
2019 — API modernization and Flutter 3.44 alignment
6 changes.
The project underwent a significant API restructuring, replacing the legacy InstantAnimation widget with modular builder widgets and controller extensions to simplify animation control. This release aligned the package with Flutter 3.44.0, updating dependencies and removing legacy Android plugin registration mechanisms. Documentation was also enhanced by converting the example app into a structured reference guide with generated code snippets.
2022–2026 — Animation control and debugging features
9 changes.
This period focused on enhancing the library's animation capabilities by introducing new builder widgets with explicit control and delay support, alongside a new developer tools overlay for debugging. The underlying MovieTween API was restructured for version 5, and the AnimationMixin was updated to respect TickerMode for better performance. Comprehensive test suites were added to verify the behavior of these new features and existing components.
Features
Introduction of Animation Developer Tools overlay
A new \AnimationDeveloperTools\ widget has been added to the library, providing a visual overlay for debugging custom animations. This tool allows developers to play, pause, and scrub through animation timelines, adjust playback speed, and define specific value bounds (lower and upper) for animation ranges. It is designed to be integrated into applications by wrapping existing widgets, with a toolbar that can be positioned at the top or bottom of the screen or hidden entirely.
_lib/animation\_developer\tools · high confidence
New animation builder widgets with control and delay support
The \lib/animation\_builder\ package now includes \CustomAnimationBuilder\, \PlayAnimationBuilder\, \LoopAnimationBuilder\, and \MirrorAnimationBuilder\. These widgets wrap the \simple\_animations\ library to provide declarative animation control. \CustomAnimationBuilder\ introduces a \Control\ enum (play, stop, loop, mirror, etc.) and a \delay\ parameter to manage animation timing and state. The specialized builders (\Play\, \Loop\, \Mirror\) expose simplified APIs for common animation patterns while leveraging the underlying control logic.
_lib/animation\builder · high confidence
Behavioural changes
AnimationMixin now respects TickerMode for background animations
The AnimationMixin implementation has been updated to integrate with Flutter's TickerMode API. This ensures that animations managed by the mixin are automatically muted or paused when the widget tree is hidden (e.g., in background tabs or off-screen), improving performance and battery life. The change involves wiring the mixin to listen to TickerMode notifications and applying the muted/forceFrames state to all created tickers.
_lib/animation\mixin · high confidence
Example app updated to Flutter 3.24 project structure
The example app in example/sa\_flutter\_app has been regenerated to align with the default structure of Flutter 3.24. This update introduces several platform-specific changes: on Android, the MainActivity now extends FlutterActivity and the AndroidManifest.xml includes the required \<queries\> block for text processing; on iOS, the AppDelegate now implements FlutterImplicitEngineDelegate to support the implicit engine, and the project uses the modern SceneDelegate pattern. Additionally, the Dart analysis options have been updated to include the recommended flutter\_lints package, and the Gradle wrapper has been upgraded to version 9.1.0.
_example/sa\_flutter\app · high confidence
Example documentation rebuilt with generated code snippets
The example application's main entry point (main.dart) has been removed and replaced by a new, comprehensive documentation file (example.md) that uses the readme\_helper package to generate and embed code snippets. This change shifts the example from a single runnable app to a structured reference guide covering various animation builders, tweens, and mixins, providing users with copy-pasteable code examples for different animation patterns.
example · high confidence
MovieTween library restructured for Version 5 with new API
The MovieTween library has been updated to Version 5, introducing a new API for defining sequential or parallel animations. The \MovieTween\ class now uses a builder pattern with \scene()\ and \tween()\ methods to define animation properties, replacing the previous constructor-based approach. The library no longer depends on the \package:collection\ package, relying instead on standard Dart and Flutter APIs for sorting and list operations. This change affects how users define and configure multi-property animations, requiring updates to existing code that relied on the old constructor signature.
_lib/movie\tween · high confidence
Refactored animation API with new controller extensions and builder widgets
The library has restructured its public API by removing the legacy \InstantAnimation\ widget and introducing \AnimationControllerExtension\ methods (\play\, \playReverse\, \loop\, \mirror\) for easier animation control. The exports now include a suite of new builder widgets (\CustomAnimationBuilder\, \LoopAnimationBuilder\, \MirrorAnimationBuilder\, \PlayAnimationBuilder\), an \AnimationMixin\, developer tools, and \MovieTween\, replacing the previous single-widget approach with a more modular set of components.
lib · high confidence
Removal of legacy Flutter plugin registrant and local SDK paths
The Android module no longer includes the auto-generated \GeneratedPluginRegistrant.java\ class or the \local.properties\ file containing hardcoded local SDK paths. This indicates a shift away from the older Flutter plugin registration mechanism (likely moving to the new V2 embedding or direct plugin initialization), which simplifies the build configuration by removing machine-specific paths and the manual plugin registration stub.
android · medium confidence
Version 5.3.0 release with Flutter 3.44.0 alignment and TickerMode fix
This release updates the package to align with the latest Flutter baseline, requiring Dart SDK ^3.12.0, Flutter \>=3.44.0, and flutter\_lints ^6.0.0. It fixes a compatibility issue with Flutter's updated TickerMode API in AnimationMixin and adds regression tests to ensure correct behavior. The example app dependencies have been updated to match current Flutter project defaults, and the README has been improved.
(repo-wide) · high confidence
Test coverage
Added tests for AnimationMixin controller modes and TickerMode integration; Added unit tests for MovieTween timeline and property behaviors; Added widget tests for AnimationDeveloperTools; Added widget tests for animation builders and controller extensions; Removed test for InstantAnimation widget.
Dependencies
Updated example app to modern Flutter/Android templates and upgraded main package dependencies
The example app (sa\_flutter\_app) has been regenerated to use the latest Flutter project structure, including Kotlin DSL build scripts (build.gradle.kts), Android Gradle plugin 9.0.1, and Kotlin 2.3.20, while the main simple\_animations package has been updated to version 5.3.0 with a Dart SDK constraint of ^3.12.0 and Flutter \>=3.44.0. Additionally, the linter dependency flutter\_lints has been upgraded to version 6.0.0 in the main package and 5.0.0 in the example, and the pub.dev URL scheme has been standardized from pub.dartlang.org to pub.dev across lockfiles.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 69.
Lenses
- Code Health 96
- Architecture 100
- Maturity 55
- Readiness 62
- Security 98
- Domain Modelling 100
Changes since last survey
- 261 commits — 225 feature/other, 36 fixes
By area
- (root) — 126 commits
- tool/templates — 15 commits
- lib/simple_animations — 12 commits
- lib/liquid — 10 commits
- example/sa_flutter_app — 7 commits
- (repo) — 6 commits
- example/lib — 6 commits
- simple_animations/example — 6 commits
- lib/developer_tools — 4 commits
- lib/simple_animations.dart — 4 commits
- lib/timeline_tween — 4 commits
- sa_liquid/lib — 4 commits
- doc/no_supercharged — 3 commits
- example/ios — 3 commits
- lib/stateless_animation — 3 commits
- test/timeline_tween — 3 commits
- doc/timeline_tween.md — 2 commits
- documentation/ARTICLES.md — 2 commits
- sa_anicoto/CHANGELOG.md — 2 commits
- sa_liquid/CHANGELOG.md — 2 commits
Notable commits
- fix: Add AnimationMixin compatibility with TickerMode API and regression test
- fix: Fix deprecated withOpacity() usage
- fix: Fix href in readme
- fix: Fix linter issues in example project
- fix: Fix linter issues in package project
- fix: Fix pubspec.yml format
- fix: Fix test with curve (#5)
- fix: Path fixes
- fix: bugfix: curve properties not applied to track item (#3)
- fix: example app: fixed crash when calling setState() after widget disposed
- fix: fix analyzer issues
- fix: fix atlas math to closer match drawCircle; clarify docs (#68)
- fix: fix author field of pubspec.yaml
- fix: fix bug in curve declaration
- fix: fix doc reference to deprecated class
- fix: fix example doc
- fix: fix exception when passing 0 as effective blur value into MaskFilter
- fix: fix homepage url / update dependencies
- fix: fix import
- fix: fix link in readme
- …and 241 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
felixblaschke/simple_animations was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit ea4804c8d98f1e1c4e92093fe0b03f0aa3e2a109 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.