import 'package:flutter/material.dart';
import 'list.dart';

import 'main.dart';

class FadeAnimation extends StatelessWidget {
  static const routeName = 'Fade_Animation';

  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Fade Animation"),
      ),
      body: ListView.builder(
          itemCount: curveList.length,
          itemBuilder: (context, index) {
            return Card(
              child: ListTile(
                title: Text("${curveList[index]}"),
                leading: CircleAvatar(
                  child: Text("${index + 1}"),
                  backgroundColor: Colors.white,
                ),
                onTap: () {
                  print(curveList.length);
                  Navigator.of(context).push(PageRouteBuilder(
                      pageBuilder: (context, animation, anotherAnimation) {
                        return ReturnPage();
                      },
                      transitionDuration: Duration(milliseconds: 2000),
                      transitionsBuilder:
                          (context, animation, anotherAnimation, child) {
                        animation = CurvedAnimation(
                            curve: curveList[index], parent: animation);
                        return FadeTransition(
                          opacity: animation,
                          child: child,
                        );
                      }));
                },
              ),
            );
          }),
    );
  }
}
import 'package:flutter/animation.dart';


List<Curve> curveList = [
  Curves.bounceIn,
Curves.bounceInOut,
Curves.bounceOut,
Curves.decelerate,
Curves.ease,
Curves.easeIn,
Curves.easeInBack,
Curves.easeInCirc,
Curves.easeInCubic,
Curves.easeInExpo,
Curves.easeInOut,
Curves.easeInOutBack,
Curves.easeInOutCirc,
Curves.easeInOutCubic,
Curves.easeInOutExpo,
Curves.easeInOutQuad,
Curves.easeInOutQuart,
Curves.easeInOutQuint,
Curves.easeInOutSine,
Curves.easeInQuad,
Curves.easeInQuart,
Curves.easeInQuint,
Curves.easeInSine,
Curves.easeInToLinear,
Curves.easeOut,
Curves.easeOutBack,
Curves.easeOutCubic,
Curves.easeOutExpo,
Curves.easeOutQuad,
Curves.easeOutQuart,
Curves.easeOutQuint,
Curves.easeOutSine,
Curves.elasticIn,
Curves.elasticInOut,
Curves.elasticOut,
Curves.fastLinearToSlowEaseIn,
Curves.fastOutSlowIn,
Curves.linear,
Curves.linearToEaseOut,
Curves.slowMiddle,
];
import 'package:flutter/material.dart';
import 'RotationAnimation.dart';
import 'fadeAnimation.dart';
import 'scaleAnimation.dart';
import 'sizeAnimation.dart';
import 'slideAnimation.dart';

main() {
  runApp(MaterialApp(
    routes: {
      SlideAnimation.routeName: (context) => SlideAnimation(),
      FadeAnimation.routeName: (context) => FadeAnimation(),
      ScaleAnimation.routeName: (context) => ScaleAnimation(),
      SizeAnimation.routeName: (context) => SizeAnimation(),
      RotationAnimation.routeName: (context) => RotationAnimation()
    },
    theme: ThemeData.dark(),
    debugShowCheckedModeBanner: false,
    home: SafeArea(
      child: Scaffold(
        appBar: AppBar(title: Text("Page Tranaction")),
        body: ListView.builder(
          itemBuilder: (context, index) {
            return Padding(
              padding: const EdgeInsets.all(8.0),
              child: Card(
                child: ListTile(
                  onTap: () {
                    Navigator.of(context).pushNamed(animationTypeList[index]);
                  },
                  leading: CircleAvatar(
                    backgroundColor: Colors.white,
                    child: Text("${index + 1}"),
                  ),
                  title: Text(animationTypeList[index].toString()),
                ),
              ),
            );
          },
          itemCount: animationTypeList.length,
        ),
      ),
    ),
  ));
}

class ReturnPage extends StatelessWidget {
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: Text('Yoooooooooo !'),
      ),
    );
  }
}

var animationTypeList = [
  SlideAnimation.routeName,
FadeAnimation.routeName,
ScaleAnimation.routeName,
SizeAnimation.routeName,
RotationAnimation.routeName
];
import 'package:flutter/material.dart';
import 'list.dart';
import "main.dart";
class RotationAnimation extends StatelessWidget {
  static const routeName = 'Rotation_Animation';

  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Rotation Animation"),
      ),
      body: ListView.builder(
          itemCount: curveList.length,
          itemBuilder: (context, index) {
            return Card(
              child: ListTile(
                title: Text("${curveList[index]}"),
                leading: CircleAvatar(
                  child: Text("${index + 1}"),
                  backgroundColor: Colors.white,
                ),
                onTap: () {
                  print(curveList.length);
                  Navigator.of(context).push(PageRouteBuilder(
                      pageBuilder: (context, animation, anotherAnimation) {
                        return ReturnPage();
                      },
                      transitionDuration: Duration(milliseconds: 2000),
                      transitionsBuilder:
                          (context, animation, anotherAnimation, child) {
                        animation = CurvedAnimation(
                            curve: curveList[index], parent: animation);
                        return RotationTransition(
                          turns: animation,
                          child: child,
                        );
                      }));
                },
              ),
            );
          }),
    );
  }
}
import 'package:flutter/material.dart';
import 'list.dart';
import 'main.dart';

class ScaleAnimation extends StatelessWidget {
  static const routeName = 'Scale_Animation';

  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Scale Animation"),
      ),
      body: ListView.builder(
          itemCount: curveList.length,
          itemBuilder: (context, index) {
            return Card(
              child: ListTile(
                title: Text("${curveList[index]}"),
                leading: CircleAvatar(
                  child: Text("${index + 1}"),
                  backgroundColor: Colors.white,
                ),
                onTap: () {
                  print(curveList.length);
                  Navigator.of(context).push(PageRouteBuilder(
                      pageBuilder: (context, animation, anotherAnimation) {
                        return ReturnPage();
                      },
                      transitionDuration: Duration(milliseconds: 2000),
                      transitionsBuilder:
                          (context, animation, anotherAnimation, child) {
                        animation = CurvedAnimation(
                            curve: curveList[index], parent: animation);
                        return ScaleTransition(
                          scale: animation,
                          child: child,
                        );
                      }));
                },
              ),
            );
          }),
    );
  }
}
import 'package:flutter/material.dart';
import 'list.dart';

import 'main.dart';

class SizeAnimation extends StatelessWidget {
  static const routeName = 'Size_Animation';

  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Size Animation"),
      ),
      body: ListView.builder(
          itemCount: curveList.length,
          itemBuilder: (context, index) {
            return Card(
              child: ListTile(
                title: Text("${curveList[index]}"),
                leading: CircleAvatar(
                  child: Text("${index + 1}"),
                  backgroundColor: Colors.white,
                ),
                onTap: () {
                  print(curveList.length);
                  Navigator.of(context).push(PageRouteBuilder(
                      pageBuilder: (context, animation, anotherAnimation) {
                        return ReturnPage();
                      },
                      transitionDuration: Duration(milliseconds: 2000),
                      transitionsBuilder:
                          (context, animation, anotherAnimation, child) {
                        animation = CurvedAnimation(
                            curve: curveList[index], parent: animation);
                        return Align(
                          child: SizeTransition(
                            sizeFactor: animation,
                            child: child,
                            axisAlignment: 0.0,
                          ),
                        );
                      }));
                },
              ),
            );
          }),
    );
  }
}
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'list.dart';

import 'main.dart';

class SlideAnimation extends StatelessWidget {
  static const routeName = 'Slide_Animation';

  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Slide Animation"),
      ),
      body: ListView.builder(
          itemCount: curveList.length,
          itemBuilder: (context, index) {
            return Card(
              child: ListTile(
                title: Text("${curveList[index]}"),
                leading: CircleAvatar(
                  child: Text("${index + 1}"),
                  backgroundColor: Colors.white,
                ),
                onTap: () {
                  print(curveList.length);
                  Navigator.of(context).push(PageRouteBuilder(
                      pageBuilder: (context, animation, anotherAnimation) {
                        return ReturnPage();
                      },
                      transitionDuration: Duration(milliseconds: 300),
                      transitionsBuilder:
                          (context, animation, anotherAnimation, child) {
                        animation = CurvedAnimation(
                            curve: curveList[index], parent: animation);
                        return SlideTransition(
                          position: Tween(
                              begin: Offset(1.0, 0.0),
                              end: Offset(0.0, 0.0))
                              .animate(animation),
                          child: child,
                        );
                      }));
                },
              ),
            );
          }),
    );
  }
}