unknownRoute method

RouteFactory unknownRoute({
  1. Widget builder(
    1. BuildContext context,
    2. Widget widget
    )?,
})

Generates the RouteFactory for unknown routes.

Implementation

RouteFactory unknownRoute({
  Widget Function(BuildContext context, Widget widget)? builder,
}) {
  return (RouteSettings settings) {
    if (settings.name == null) return null;

    final parsed = _parseRouteSettings(settings);
    String routeName = parsed.routeName;
    final ArgumentsWrapper argumentsWrapper = parsed.arguments;

    final NyArgument? baseArgs = argumentsWrapper.baseArguments;
    final NyQueryParameters? queryParameters =
        argumentsWrapper.queryParameters;

    if (_routeUnknownMappings.isEmpty) {
      return null;
    }

    final NyRouterRoute originalRoute =
        _routeUnknownMappings.entries.first.value;

    originalRoute.pageTransitionSettings ??= const PageTransitionSettings();

    if (Nylo.instance.onDeepLinkAction != null) {
      Nylo.instance.onDeepLinkAction!(routeName, queryParameters?.data);
    }

    PageTransitionType? pageTransitionType;
    if (originalRoute.pageTransitionType != null) {
      pageTransitionType = originalRoute.pageTransitionType;
    }
    if (originalRoute.getTransitionType != null) {
      pageTransitionType =
          originalRoute.getTransitionType?.pageTransitionType;
    }
    if (argumentsWrapper.pageTransitionType != null) {
      pageTransitionType = argumentsWrapper.pageTransitionType;
    }

    return PageTransition(
      child: StatefulBuilder(
        builder: (BuildContext context, StateSetter setState) {
          if (builder != null) {
            Widget widget = originalRoute.builder(
              context,
              baseArgs ?? originalRoute.defaultArgs,
              queryParameters ?? originalRoute.queryParameters,
            );
            return builder(context, widget);
          }
          return originalRoute.builder(
            context,
            baseArgs ?? originalRoute.defaultArgs,
            queryParameters ?? originalRoute.queryParameters,
          );
        },
      ),
      type: pageTransitionType ?? PageTransitionType.rightToLeft,
      settings: settings,
      duration: _getPageTransitionDuration(originalRoute, argumentsWrapper),
      alignment: _getPageTransitionAlignment(originalRoute, argumentsWrapper),
      reverseDuration: _getPageTransitionReversedDuration(
        originalRoute,
        argumentsWrapper,
      ),
      childCurrent: _getPageTransitionChildCurrent(
        originalRoute,
        argumentsWrapper,
      ),
      curve: _getPageTransitionCurve(originalRoute, argumentsWrapper),
      ctx: _getPageTransitionContext(originalRoute, argumentsWrapper),
      inheritTheme: _getPageTransitionInheritTheme(
        originalRoute,
        argumentsWrapper,
      ),
      fullscreenDialog: _getPageTransitionFullscreenDialog(
        originalRoute,
        argumentsWrapper,
      ),
      opaque: _getPageTransitionOpaque(originalRoute, argumentsWrapper),
    );
  };
}