CustomRoutePageFactoryResolver class abstract

Interface for custom handling of specific Route types that are not supported out of the box by NavigatorCompatibilityOverrides.

This allows applications to integrate custom Route implementations from third-party libraries or legacy code into YxNavigation's declarative navigation system.

Purpose

NavigatorCompatibilityOverrides provides built-in support for standard Flutter route types:

However, real-world applications may use custom Route classes with:

  • Custom transition animations
  • Specific route parameters (e.g., for analytics)
  • Third-party library route implementations

CustomRoutePageFactoryResolver enables handling of these custom types.

Implementation

To create a custom resolver:

  1. Implement hasResolverFor to identify your custom Route types
  2. Implement resolvePage to create appropriate Page objects

Example resolver for a custom transition route:

class MyCustomResolver implements CustomRoutePageFactoryResolver {
  @override
  bool hasResolverFor<T>(Route<T> route) {
    return route is MyCustomTransitionRoute;
  }

  @override
  Page<Object?> resolvePage<T>({
    required Completer<T?> routeCompleter,
    required Route<T> route,
    required LocalKey key,
  }) {
    final customRoute = route as MyCustomTransitionRoute<T>;
    return MyCustomPage<T>(
      key: key,
      name: route.settings.name,
      arguments: route.settings.arguments,
      routeCompleter: routeCompleter,
      transitionDuration: customRoute.transitionDuration,
      child: Builder(
        builder: (context) => customRoute.buildPage(
          context,
          customRoute.animation ?? kAlwaysDismissedAnimation,
          customRoute.secondaryAnimation ?? kAlwaysDismissedAnimation,
        ),
      ),
    );
  }
}

Registration

Register your resolver with NavigatorCompatibilityOverrides:

NavigationConfigProvider(
  navigatorOverrides: NavigatorCompatibilityOverrides(
    customRoutePageFactoryResolver: MyCustomResolver(),
  ),
  child: MaterialApp.router(routerConfig: config),
)

Resolution Priority

Custom resolvers are checked first, before built-in route types. This allows overriding default handling if needed.

See also:

Constructors

CustomRoutePageFactoryResolver()
Interface for custom handling of specific Route types that are not supported out of the box by NavigatorCompatibilityOverrides.
const

Properties

hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

hasResolverFor<T>(Route<T> route) bool
Determines whether this resolver can handle the given route.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
resolvePage<T>({required Completer<T?> routeCompleter, required Route<T> route, required LocalKey key}) Page<Object?>
Creates a Page object for the given route.
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited