A Flutter library for creating flexible and easy-to-use page transition animations with minimal boilerplate.
Flutter Villains is a Flutter library designed to simplify the implementation of animated page transitions. It provides a declarative way to animate widgets during navigation events, eliminating the need for manual AnimationController management and reducing boilerplate code. The library handles animation timing, page transition callbacks, and offers both prebuilt and custom animation options.
Flutter developers building mobile or cross-platform apps who want to add polished page transition animations without dealing with complex animation setup.
Developers choose Flutter Villains because it drastically reduces the effort required to implement page transitions, offers flexibility through custom animations, and integrates seamlessly with Flutter's navigation system. Its declarative API makes animations easy to manage and maintain.
Flexible and easy to use page transitions.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Eliminates manual AnimationController setup and boilerplate by wrapping widgets in a Villain component, as shown in the example code where no TickerProvider or initState is needed.
Includes ready-to-use effects like fade and slide animations with customizable parameters, reducing development time for standard page transitions.
Integrates seamlessly with Flutter's navigation via VillainTransitionObserver, automatically triggering animations during page changes without extra code.
Allows creating custom animations by defining an Animatable and AnimatedWidget, enabling extensibility beyond prebuilt options, as demonstrated in the fade animation example.
Exit animations are always tied to the page transition duration, limiting custom timing control, as stated in the README: 'Setting the duration doesn't change anything' for exits.
No support for playing individual villains independently, requiring workarounds like nesting, which is acknowledged as a missing feature in the README's 'Controller' section.
Relies on Flutter's standard navigatorObservers; integrating with alternative routing solutions may require manual adjustments or additional code.