This is a simple demo showing how you can animate views in flutter using very little code.
Watch Video Tutorial
Here is the simple code in which I am showing all basic functions in different different functions. You can call these methods in the build method and execute all.
import 'package:flutter/material.dart'; import 'package:animator/animator.dart'; import 'dart:math'; class AnimationDemo extends StatefulWidget { AnimationDemo() : super(); final String title = "Flutter Animation"; @override AnimationDemoState createState() => AnimationDemoState(); } class AnimationDemoState extends State<AnimationDemo> { // final logo = FlutterLogo( size: 100, ); // Animate Opacity Widget animateOpacity() { return Animator( // repeats: 5, cycles: 2 * 5, // forward and backward 5 times builder: (anim) => Opacity( opacity: anim.value, child: logo, ), ); } // Animate FadeTransition Widget animateFadeIn() { return Animator( duration: Duration(seconds: 1), curve: Curves.elasticOut, // repeats: 5, cycles: 0, // infinite builder: (anim) => FadeTransition( opacity: anim, child: logo, ), ); } // Transform Scale Widget transformScale() { return Animator( duration: Duration(seconds: 3), cycles: 0, builder: (anim) => Transform.scale( scale: anim.value, alignment: Alignment.bottomRight, child: logo, ), ); } // Transform Scale Widget transformScale2() { return Animator( tween: Tween<double>(begin: 0.5, end: 1.5), duration: Duration(seconds: 2), curve: Curves.elasticOut, cycles: 0, builder: (anim) => Transform.scale( scale: anim.value, alignment: Alignment.bottomRight, child: logo, ), ); } // Size Transition Widget sizeTransition1() { return Animator( duration: Duration(seconds: 3), cycles: 0, builder: (anim) => SizeTransition( sizeFactor: anim, child: logo, ), ); } // Size Transition Widget sizeTransition2() { return Animator( duration: Duration(seconds: 3), cycles: 0, builder: (anim) => SizeTransition( axis: Axis.horizontal, sizeFactor: anim, child: logo, ), ); } // Size Transition Widget sizeTransition3() { return Animator( duration: Duration(seconds: 3), cycles: 0, builder: (anim) => SizeTransition( axis: Axis.horizontal, axisAlignment: -1, sizeFactor: anim, child: logo, ), ); } // Size Transition Widget sizeTransition4() { return Animator( tween: Tween<double>(begin: 0.5, end: 1.5), duration: Duration(seconds: 3), cycles: 0, builder: (anim) => SizeTransition( axis: Axis.horizontal, axisAlignment: 1, sizeFactor: anim, child: logo, ), ); } // Rotate Animation Widget rotate() { return Animator( tween: Tween<double>(begin: 0, end: 2 * pi), duration: Duration(seconds: 3), cycles: 0, builder: (anim) => Transform.rotate( angle: anim.value, child: logo, ), ); } // Rotate Animation Widget rotate2() { return Animator( tween: Tween<double>(begin: 0, end: 2 * pi), duration: Duration(seconds: 2), cycles: 0, curve: Curves.elasticOut, builder: (anim) => Transform( transform: Matrix4.rotationZ(anim.value), alignment: Alignment.center, child: logo, ), ); } // Rotate Animation Widget rotate3() { return Animator( tween: Tween<double>(begin: 0, end: 3), duration: Duration(seconds: 2), repeats: 0, builder: (anim) => Transform( transform: Matrix4.rotationZ(anim.value), alignment: Alignment.center, child: logo, ), ); } // Rotate Animation Widget rotate4() { return Animator( tween: Tween<double>(begin: 0, end: 3), duration: Duration(seconds: 2), repeats: 0, builder: (anim) => RotationTransition( turns: anim, alignment: Alignment.center, child: logo, ), ); } // Skew Animation Widget skew1() { return Animator( tween: Tween<double>(begin: 0, end: 3), duration: Duration(seconds: 2), repeats: 0, builder: (anim) => Transform( transform: Matrix4.skewX(anim.value), child: Container( decoration: BoxDecoration( border: Border.all( color: Colors.blue, ), ), child: logo, ), ), ); } // Skew Animation Widget skew2() { return Animator( tween: Tween<double>(begin: -0.5, end: 0.5), duration: Duration(seconds: 2), cycles: 0, builder: (anim) => Transform( transform: Matrix4.skew(anim.value, anim.value), child: Container( decoration: BoxDecoration( border: Border.all( color: Colors.blue, ), ), child: logo, ), ), ); } // Skew Animation Widget skew3() { return Animator( tween: Tween<Offset>(begin: Offset(-1, 0), end: Offset(1, 0)), duration: Duration(seconds: 2), cycles: 0, builder: (anim) => FractionalTranslation( translation: anim.value, child: logo, ), ); } // Scale From Center Widget scaleFromCenter() { return Animator( duration: Duration(seconds: 2), cycles: 0, builder: (anim) => SizedBox( width: anim.value * 50, height: anim.value * 50, child: logo, ), ); } // Translate Animations Widget translate1() { return Animator( tween: Tween<Offset>( begin: Offset(-50, 0), end: Offset(50, 0), ), duration: Duration(seconds: 2), cycles: 0, builder: (anim) => Transform.translate( offset: anim.value, child: logo, ), ); } // Translate Animations Widget translate2() { return Animator( tween: Tween<Offset>( begin: Offset(-1, 0), end: Offset(1, 0), ), duration: Duration(seconds: 2), cycles: 0, builder: (anim) => SlideTransition( position: anim, child: logo, ), ); } // Transform Animations Widget transform1() { return Animator( tween: Tween<Offset>( begin: Offset(-50, 0), end: Offset(50, 0), ), duration: Duration(seconds: 2), cycles: 0, builder: (anim) => Transform( transform: Matrix4.translationValues(anim.value.dx, 0, 0), child: logo, ), ); } // Transform Animations Widget transform2() { return Animator( duration: Duration(seconds: 2), curve: Curves.bounceInOut, cycles: 0, builder: (anim) => Transform( transform: Matrix4.translationValues(anim.value * 100, 0, 0) ..rotateZ(anim.value * 4 * pi), child: logo, ), ); } // Transform Animations Widget transform3() { return Animator( duration: Duration(seconds: 2), cycles: 0, builder: (anim) => Transform( transform: Matrix4.translationValues(anim.value * 100, 0, 0) ..rotateZ(anim.value * 4 * pi), child: logo, ), ); } // Transform Animations Widget transform4() { return Animator( duration: Duration(seconds: 2), cycles: 0, builder: (anim) => Transform( transform: Matrix4.translationValues(anim.value * 100, 0, 0) ..rotateZ(anim.value * 4 * pi) ..scale(anim.value), child: logo, ), ); } Widget opacityWithTranslationRotation() { return Animator( tweenMap: { 'opacity': Tween<double>(begin: 0, end: 1), 'translation': Tween<Offset>(begin: Offset.zero, end: Offset(1, 0)), 'rotation': Tween<double>(begin: 0, end: 4 * pi), }, duration: Duration(seconds: 2), cycles: 0, builderMap: (Map<String, Animation> anim) => FadeTransition( opacity: anim['opacity'], child: FractionalTranslation( translation: anim['translation'].value, child: Transform.rotate( angle: anim['rotation'].value, child: logo, ), ), ), ); } Widget opacityWithTranslationRotationColor() { return Animator( tweenMap: { 'opacity': Tween<double>(begin: 0, end: 1), 'translation': Tween<Offset>(begin: Offset.zero, end: Offset(1, 0)), 'rotation': Tween<double>(begin: 0, end: 4 * pi), 'color': ColorTween(begin: Colors.blueAccent, end: Colors.redAccent), }, duration: Duration(seconds: 2), cycles: 0, builderMap: (Map<String, Animation> anim) => FadeTransition( opacity: anim['opacity'], child: FractionalTranslation( translation: anim['translation'].value, child: Transform.rotate( angle: anim['rotation'].value, child: Stack( alignment: Alignment.topCenter, children: <Widget>[ Container( width: 50, height: 50, decoration: BoxDecoration( color: Colors.white, shape: BoxShape.circle, ), ), Container( width: 50, height: 50, decoration: BoxDecoration( color: anim['color'].value, shape: BoxShape.circle, ), ), ], ), ), ), ), ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Container( padding: EdgeInsets.all(20.0), child: Center( child: opacityWithTranslationRotationColor(), ), ), ); } }