How to push multiple routes with Flutter Navigator

Viewed 9828

If I push a route in flutter to a deep part of my app is there any way to supply additional routes so that the back/up navigation can be customized?

2 Answers

I solved this by pushing several routes in a row without animation to solve transition visibility issues. So far, it works fine on iOS for me. Here's a way to do it.

Create a NoAnimationPageRoute by extending MaterialPageRoute and overriding buildTransitions:

class NoAnimationPageRoute<T> extends MaterialPageRoute<T> {
  NoAnimationPageRoute({ WidgetBuilder builder }) : super(builder: builder);

  @override
  Widget buildTransitions(
      BuildContext context,
      Animation<double> animation,
      Animation<double> secondaryAnimation,
      Widget child) {
    return child;
  }
}

Create a function that uses NoAnimationPageRoute:

Future<T> pushWithoutAnimation<T extends Object>(Widget page) {
  Route route = NoAnimationPageRoute(builder: (BuildContext context) => page);
  return Navigator.push(context, route);
}

Call the function several times in a row:

pushWithoutAnimation(Screen1());
pushWithoutAnimation(Screen2());
pushWithoutAnimation(Screen3());
Related