pushIfNotCurrent<T> static method

Future<T?> pushIfNotCurrent<T>(
  1. BuildContext context,
  2. String routeName, {
  3. Object? arguments,
  4. NavTransitionType? transitionType,
  5. Duration? transitionDuration,
  6. Duration? reverseTransitionDuration,
})

Push only if routeName is not already the current route.

Prevents duplicate entries in the back-stack.

Implementation

static Future<T?> pushIfNotCurrent<T>(
  BuildContext context,
  String routeName, {
  Object? arguments,
  NavTransitionType? transitionType,
  Duration? transitionDuration,
  Duration? reverseTransitionDuration,
}) {
  final String? current = ModalRoute.of(context)?.settings.name;
  if (current == routeName) return Future<T?>.value();

  return pushNamed<T>(
    context,
    routeName,
    arguments: arguments,
    transitionType: transitionType,
    transitionDuration: transitionDuration,
    reverseTransitionDuration: reverseTransitionDuration,
  );
}