buildTransitions<T> method

  1. @override
Widget buildTransitions<T>(
  1. PageRoute<T> route,
  2. BuildContext context,
  3. Animation<double> animation,
  4. Animation<double> secondaryAnimation,
  5. Widget child,
)
override

Wraps the child with one or more transition widgets which define how route arrives on and leaves the screen.

The MaterialPageRoute.buildTransitions method looks up the current PageTransitionsTheme with Theme.of(context).pageTransitionsTheme and delegates to this method with a PageTransitionsBuilder based on the theme's ThemeData.platform.

Implementation

@override
Widget buildTransitions<T>(
  PageRoute<T> route,
  BuildContext context,
  Animation<double> animation,
  Animation<double> secondaryAnimation,
  Widget child,
) {
  return _PredictiveBackGestureDetector(
    route: route,
    builder: (BuildContext context) {
      // Only do a predictive back transition when the user is performing a
      // pop gesture. Otherwise, for things like button presses or other
      // programmatic navigation, fall back to ZoomPageTransitionsBuilder.
      if (route.popGestureInProgress) {
        return _PredictiveBackPageTransition(
          animation: animation,
          secondaryAnimation: secondaryAnimation,
          getIsCurrent: () => route.isCurrent,
          child: child,
        );
      }

      return const ZoomPageTransitionsBuilder().buildTransitions(
        route,
        context,
        animation,
        secondaryAnimation,
        child,
      );
    },
  );
}