navigateToRoute<R, P extends RouteParams> method

Future<R?> navigateToRoute<R, P extends RouteParams>(
  1. BuildContext context,
  2. AppRoute<R, P> appRoute, {
  3. bool replace = false,
  4. P? parameters,
  5. bool clearStack = false,
  6. TransitionType? transition,
  7. bool rootNavigator = false,
  8. NavigatorState? navigator,
  9. Duration transitionDuration = const Duration(milliseconds: 250),
  10. RouteTransitionsBuilder? transitionBuilder,
})

Navigates directly to a route instance, using the provided parameters.

Implementation

Future<R?> navigateToRoute<R, P extends RouteParams>(
    BuildContext context, AppRoute<R, P> appRoute,
    {bool replace = false,
    P? parameters,
    bool clearStack = false,
    TransitionType? transition,
    bool rootNavigator = false,
    NavigatorState? navigator,
    Duration transitionDuration = const Duration(milliseconds: 250),
    RouteTransitionsBuilder? transitionBuilder}) {
  if (appRoute is AppPageRoute<R, P>) {
    final Route<R?> Function(String, P) routeCreator =
        routeFactory.generate<R, P>(
      appRoute,
      appRoute.transitionType,
      transitionDuration,
      transitionBuilder,
    );

    final _navigator =
        navigator ?? navigatorOf(context, rootNavigator == true);

    final route = routeCreator(
        appRoute.route, parameters ?? DefaultRouteParams.emptyAs());
    return replace
        ? _navigator.pushReplacement(route as Route<R>)
        : _navigator.push(route as Route<R>);
  } else if (appRoute is CompletableAppRoute<R, P>) {
    return appRoute
        .handle(context, parameters ?? DefaultRouteParams.emptyAs(),
            (BuildContext context, AppRoute route, RouteParams params) {
      return navigateToDynamicRoute(context, route, parameters: params);
    });
  } else {
    throw "Invalid route type ${appRoute.runtimeType}";
  }
}