Easy Animated Indexed Stack

A drop-in replacement for Flutter's default IndexedStack that allows simple animations to transition between widgets/screens/pages.

Demo

Getting Started

Add the dependency in your pubspec.yaml file:

dependencies:
  flutter:
    sdk: flutter
  # Add this  
  easy_animated_indexed_stack:

Usage

As mentioned above, this package provides a drop-in replacement for Flutter's default IndexedStack widget, meaning you can simply replace your IndexedStack usages with EasyAnimatedIndexedStack instances. For example:

@override
Widget build(BuildContext context) {
  return MaterialApp(
    home: Scaffold(
      // Simply replaced `IndexedStack` with `EasyAnimatedIndexedStack`
      body: EasyAnimatedIndexedStack(
        // `selectedIndex` is a state variable (int)
        index: selectedIndex,
        // Customise the animation to your liking
        animationBuilder: (context, animation, child) {
          return RotationTransition(
            turns: Tween<double>(begin: 1, end: 0).animate(animation),
            child: child,
          );
        },
        curve: Curves.easeInOut,
        duration: const Duration(milliseconds: 700),
        children: [
          ScreenA(onTap: () => setState(() => selectedIndex = 1)),
          ScreenB(onTap: () => setState(() => selectedIndex = 2)),
          ScreenC(onTap: () => setState(() => selectedIndex = 0)),
        ],
      ),
    ),
  );
}

Resources

A medium article talking about the inspiration behind this library can be found here

License

This package uses the New BSD License