requireFlutterCoordinator function

  1. @visibleForTesting
  2. @protected
Coordinator<RouteUnique> requireFlutterCoordinator(
  1. CoordinatorCore<RouteUri> coordinatorCore, {
  2. required PathKey pathKey,
})

Ensures coordinatorCore is a Flutter Coordinator for default path builders.

NavigationPath, IndexedStackPath, and BranchedStackPath defaults use NavigationStack or IndexedStackPathBuilder, restoration IDs, and transitions that require Coordinator. Throws an AssertionError in debug when coordinatorCore is another CoordinatorCore implementation — register a custom builder via CoordinatorLayout.defineLayoutBuilder instead.

Implementation

@visibleForTesting
@protected
Coordinator requireFlutterCoordinator(
  CoordinatorCore coordinatorCore, {
  required PathKey pathKey,
}) {
  assert(
    coordinatorCore is Coordinator,
    'The default layout builder for "${pathKey.key}" requires a zenrouter '
    'Coordinator (extend Coordinator<YourRoute>), but received '
    '${coordinatorCore.runtimeType}. '
    'NavigationPath, IndexedStackPath, and BranchedStackPath use Flutter '
    'navigation widgets and need '
    'Coordinator.routerDelegate, CoordinatorRestoration, and transition '
    'strategy. Either extend Coordinator or call defineLayoutBuilder('
    '${pathKey.key}, ...) with a builder that supports your coordinator type. '
    'See packages/zenrouter/doc/guides/route-layout.md#default-layout-builders-require-coordinator.',
  );
  return coordinatorCore as Coordinator;
}