push<T> static method
Future<T?>
push<T>(
- Widget page, {
- bool fullscreenDialog = false,
- bool preventDuplicates = true,
- bool opaque = true,
- bool maintainState = true,
- RouteTransitions transition = RouteTransitions.rightToLeft,
- Duration duration = const Duration(milliseconds: 300),
- Curve curve = Curves.easeOut,
- RouteSettings? settings,
- Object? arguments,
- VoidCallback? onDismiss,
Implementation
static Future<T?> push<T>(
Widget page, {
bool fullscreenDialog = false,
bool preventDuplicates = true,
bool opaque = true,
bool maintainState = true,
RouteTransitions transition = RouteTransitions.rightToLeft,
Duration duration = const Duration(milliseconds: 300),
Curve curve = Curves.easeOut,
RouteSettings? settings,
Object? arguments,
VoidCallback? onDismiss,
}) {
if (preventDuplicates && ModalRoute.of(navigatorKey.currentContext!)?.settings.name == page.runtimeType.toString()) {
return Future<T?>.value();
}
return Navigator.push<T>(
navigatorKey.currentContext!,
PageRouteBuilder<T>(
pageBuilder: (BuildContext context, Animation<double> _, Animation<double> _) => page,
transitionsBuilder: _getTransition(transition, curve),
transitionDuration: duration,
reverseTransitionDuration: duration,
settings: settings ?? RouteSettings(arguments: arguments),
fullscreenDialog: fullscreenDialog,
opaque: opaque,
maintainState: maintainState,
),
).then((T? value) {
onDismiss?.call();
return value;
});
}