pushNamed<T extends Object?> static method

Future<T?> pushNamed<T extends Object?>(
  1. BuildContext context,
  2. String routeName, {
  3. Object? arguments,
})

Implementation

static Future<T?> pushNamed<T extends Object?>(
  BuildContext context,
  String routeName, {
  Object? arguments,
}) async {
  FTxRoute? fxRoute = getRouteFromName(routeName);
  if (fxRoute == null) throw ("This route is not implemented");

  if (fxRoute.middlewares != null) {
    for (FTxMiddleware middleware in fxRoute.middlewares!) {
      String redirectedRouteName = await middleware.handle(routeName);
      if (redirectedRouteName.compareTo(routeName) != 0) {
        return pushNamed(context, redirectedRouteName, arguments: arguments);
      }
    }
  }

  return Navigator.of(context).pushNamed<T>(routeName, arguments: arguments);
}