push<T> static method

Future<T?> push<T>(
  1. Widget page, {
  2. bool fullscreenDialog = false,
  3. bool preventDuplicates = true,
  4. RouteTransitions transition = RouteTransitions.rightToLeft,
  5. Duration duration = const Duration(milliseconds: 300),
  6. Curve curve = Curves.easeOut,
  7. RouteSettings? settings,
})

Push with optional custom transition

Implementation

static Future<T?> push<T>(
  Widget page, {
  bool fullscreenDialog = false,
  bool preventDuplicates = true,
  RouteTransitions transition = RouteTransitions.rightToLeft,
  Duration duration = const Duration(milliseconds: 300),
  Curve curve = Curves.easeOut,
  RouteSettings? settings,
}) {
  if (preventDuplicates && _isCurrentRoute(page)) {
    return Future<T?>.value();
  }

  return Navigator.push<T>(
    navigatorKey.currentContext!,
    PageRouteBuilder<T>(
      pageBuilder: (BuildContext context, Animation<double> _, Animation<double> __) => page,
      transitionsBuilder: _getTransition(transition),
      transitionDuration: duration,
      reverseTransitionDuration: duration,
      settings: settings ?? RouteSettings(name: page.runtimeType.toString()),
      fullscreenDialog: fullscreenDialog,
    ),
  );
}