navigateToDynamicRoute method

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

Implementation

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

    final route = routeCreator(appRoute.route, parameters);
    final _navigator =
        navigator ?? navigatorOf(context, rootNavigator == true);

    return replace
        ? _navigator.pushReplacement(route)
        : _navigator.push(route);
  } else if (appRoute is CompletableAppRoute) {
    return appRoute.handleAny(context, parameters,
        (context, route, params) async {
      return await navigateToDynamicRoute(context, route, parameters: params);
    });
  } else {
    throw "Unsupported AppRoutes type ${appRoute?.runtimeType ?? 'null'}";
  }
}