Learn
Architecture and ownership
Follow one navigation request from a typed Destination to a rendered Navigator stack and identify the owner of each object.
Architecture and ownership
Ark Navigation separates definition, mutable state, and Flutter rendering.
Destination + exact operation
↓
NavigationPort
↓
Graph resolution → Redirect → leave Guard → enter Guard
↓
NavigationController commits one atomic stack change
↓
NavigationSnapshot
↓
NavigationRouter renders Navigator pages and reports URI state
NavigationGraph is the immutable definition: Scopes, Modules, Mounts, routes, and policies. NavigationSession owns the mutable Controller and Flutter Router objects for one view. NavigationRuntime is optional coordination for several Sessions that share a Graph but never share a stack.
The object that creates a Session disposes it. A root StatefulWidget, an application scope, or a matching DI scope are valid owners. A global Session for every window is not: each Flutter View needs independent stack, history, and restoration state.
Feature code normally depends on NavigationPort. Widgets inside the navigation tree may read that narrow contract through BuildContext. Graph composition remains at the application root so feature Modules can be reused without knowing where they are mounted.