buildPageRoute<T> function
Route<T>
buildPageRoute<T>(
- Widget child,
- PageRouteAnimation? pageRouteAnimation,
- Duration? duration
Builds a page route with the specified animation.
Implementation
Route<T> buildPageRoute<T>(
Widget child,
PageRouteAnimation? pageRouteAnimation,
Duration? duration,
) {
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(
child: child, turns: ReverseAnimation(anim));
},
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(child: child, scale: anim);
},
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(
child: child,
position: Tween(
begin: Offset(1.0, 0.0),
end: Offset(0.0, 0.0),
).animate(anim),
);
},
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(
child: child,
position: Tween(
begin: Offset(0.0, 1.0),
end: Offset(0.0, 0.0),
).animate(anim),
);
},
transitionDuration: duration ?? pageRouteTransitionDurationGlobal,
);
}
}
// Default page route.
return MaterialPageRoute<T>(builder: (_) => child);
}