NavigatorCompatibilityOverrides constructor
const
NavigatorCompatibilityOverrides({
- PushReplacementOperation? pushReplacement,
- PushAndRemoveUntilOperation? pushAndRemoveUntil,
- RemoveRouteOperation? removeRoute,
- PushOperation? push,
- RouteIdGenerator routeIdGenerator = _generateRouteId,
- CustomRoutePageFactoryResolver? customRoutePageFactoryResolver,
- CompatibilityObserver? observer,
Central component of the compatibility layer that adapts Navigator 1.0 operations for use with YxNavigation's declarative architecture.
Purpose
Enables seamless integration of legacy Navigator 1.0 code (pageless routes) with YxNavigation (page-based routes) by:
- Intercepting Navigator 1.0 operations (
push,pop,pushReplacement, etc.) - Wrapping pageless routes in Page objects
- Synchronizing route state with
RouteNodetree - Managing route result Completers for proper async behavior
Supported Operations
push- Creates new pageless routepop- Closes route and returns resultpushReplacement- Replaces current routepushAndRemoveUntil- Clears stack with predicateremoveRoute- Removes specific route from stack
Supported Route Types
Out of the box support:
- MaterialPageRoute
- CupertinoPageRoute
- ModalBottomSheetRoute
- Any ModalRoute (via
modalRouteProxyfallback)
Custom routes via CustomRoutePageFactoryResolver.
Features
Observer
Register a CompatibilityObserver to monitor pageless route lifecycle events for analytics, debugging, or migration tracking.
Usage
Register with NavigationConfigProvider:
NavigationConfigProvider(
navigatorOverrides: NavigatorCompatibilityOverrides(
// Optional: custom route resolver
customRoutePageFactoryResolver: MyCustomResolver(),
// Optional: observer for analytics/debugging
observer: MyCompatibilityObserver(),
),
child: MaterialApp.router(routerConfig: config),
)
See also:
- CompatibilityObserver, for monitoring route lifecycle events
- CustomRoutePageFactoryResolver, for handling custom route types
- NavigatorOverrides, the base class
SourceRouteCompleter, for route completion management
Implementation
const NavigatorCompatibilityOverrides({
super.pushReplacement,
super.pushAndRemoveUntil,
super.removeRoute,
super.push,
super.routeIdGenerator,
CustomRoutePageFactoryResolver? customRoutePageFactoryResolver,
super.observer,
}) : _customRoutePageFactoryResolver = customRoutePageFactoryResolver;