buildPageRoute<T> function
Route<T>
buildPageRoute<T>(
- Widget child,
- PageRouteAnimation? pageRouteAnimation,
- Duration? duration,
- String? routeName,
- Object? routeArguments,
Builds a page route with the specified animation.
Implementation
Route<T> buildPageRoute<T>(
Widget child,
PageRouteAnimation? pageRouteAnimation,
Duration? duration,
String? routeName,
Object? routeArguments,
) {
if (pageRouteAnimation != null) {
if (pageRouteAnimation == PageRouteAnimation.Fade) {
// Fade animation for page route.
return PageRouteBuilder(
pageBuilder: (c, a1, a2) => child,
transitionsBuilder: (c, anim, a2, child) {
return FadeTransition(opacity: anim, child: child);
},
transitionDuration: duration ?? pageRouteTransitionDurationGlobal,
);
} else if (pageRouteAnimation == PageRouteAnimation.Rotate) {
// Rotation animation for page route.
return PageRouteBuilder(
pageBuilder: (c, a1, a2) => child,
transitionsBuilder: (c, anim, a2, child) {
return RotationTransition(
turns: ReverseAnimation(anim),
child: child,
);
},
transitionDuration: duration ?? pageRouteTransitionDurationGlobal,
);
} else if (pageRouteAnimation == PageRouteAnimation.Scale) {
// Scale animation for page route.
return PageRouteBuilder(
pageBuilder: (c, a1, a2) => child,
transitionsBuilder: (c, anim, a2, child) {
return ScaleTransition(scale: anim, child: child);
},
transitionDuration: duration ?? pageRouteTransitionDurationGlobal,
);
} else if (pageRouteAnimation == PageRouteAnimation.Slide) {
// Slide animation for page route.
return PageRouteBuilder(
pageBuilder: (c, a1, a2) => child,
transitionsBuilder: (c, anim, a2, child) {
return SlideTransition(
position: Tween(
begin: Offset(1.0, 0.0),
end: Offset(0.0, 0.0),
).animate(anim),
child: child,
);
},
transitionDuration: duration ?? pageRouteTransitionDurationGlobal,
);
} else if (pageRouteAnimation == PageRouteAnimation.SlideBottomTop) {
// Slide from bottom to top animation for page route.
return PageRouteBuilder(
pageBuilder: (c, a1, a2) => child,
transitionsBuilder: (c, anim, a2, child) {
return SlideTransition(
position: Tween(
begin: Offset(0.0, 1.0),
end: Offset(0.0, 0.0),
).animate(anim),
child: child,
);
},
transitionDuration: duration ?? pageRouteTransitionDurationGlobal,
);
}
}
// Default page route.
return MaterialPageRoute<T>(
builder: (_) => child,
settings: RouteSettings(name: routeName, arguments: routeArguments),
);
}