CompatibilityObserver class abstract

Observer for monitoring Navigator 1.0 compatibility layer events.

Provides hooks for tracking pageless routes created through Navigator 1.0 API methods like Navigator.push, showDialog, etc.

Similar to NavigatorObserver but specifically for compatibility layer.

Use Cases

  • Analytics: Track usage of legacy Navigator 1.0 APIs
  • Migration monitoring: Measure progress of migration to declarative navigation
  • Debugging: Log pageless route lifecycle events

Example

class MyCompatibilityObserver extends CompatibilityObserver {
  @override
  bool willPushPagelessRoute(
    Route<dynamic> route,
    String routeId,
  ) {
    // Validate or log before processing
    print('Will push pageless route: ${route.runtimeType}');
    return true; // Allow processing
  }

  @override
  void didCreatePagelessRoute(
    Route<dynamic> route,
    String routeId,
    String routeType,
    RouteNode routeNode,
  ) {
    print('Pageless route created: $routeType ($routeId)');
    analytics.trackLegacyRoute(routeType);
  }
}

// Register in NavigatorCompatibilityOverrides:
NavigationConfigProvider(
  navigatorOverrides: NavigatorCompatibilityOverrides(
    observer: MyCompatibilityObserver(),
  ),
  child: MaterialApp.router(routerConfig: config),
)

See also:

Constructors

CompatibilityObserver()

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

didCreatePagelessRoute({required RouteNodeReadable routeNodeReadable, required Route route, required String routeId, required String routeType, required RouteNode routeNode}) → void
Called when a pageless route is successfully created and converted.
didFailPagelessRoute({required RouteNodeReadable routeNodeReadable, required Route route, required Object error, required RouteNode? routeNode}) → void
Called when a pageless route creation attempt fails.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
inherited
willPushPagelessRoute({required RouteNodeReadable routeNodeReadable, required Route route, required String routeId}) bool
Called BEFORE a pageless route is processed.

Operators

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