Navigation & routes
OmegaNavigator registers OmegaRoute entries and listens on the channel (via OmegaFlowManager.wireNavigator) for:
navigation.intentwith an OmegaIntent payload, ornavigate.<id>/navigate.push.<id>event names (converted to intents).
Assign navigatorKey: runtime.navigator.navigatorKey on MaterialApp.
Platform transitions
OmegaNavigator picks Material routes on Android (and web/desktop) and Cupertino routes on iOS (native slide + edge swipe-back), so push / pushReplacement feel native on each mobile platform.
navigate.* vs navigate.push.*
| Pattern | Navigator behaviour |
|---|---|
navigate.login | Replace current route (e.g. login as root — user should not “back” into a stale screen). |
navigate.push.detail | Push a new route so Navigator.pop returns to the previous screen. |
Intent payloads become RouteSettings.arguments. Prefer OmegaRoute.typed (API) or routeArguments so pages do not cast by hand.
Route ids and wires
OmegaRoute(id: 'login') pairs with AppIntent members whose wire is navigate.login (via OmegaIntentNameDottedCamel). A mismatch between id and wire is a frequent first bug — omega validate checks common cases when your setup references navigateLogin, navigateHome, navigateRoot, etc.
Cold start
initialNavigationIntent in OmegaConfig must align with OmegaScope.initialNavigationIntent and OmegaInitialRoute so the first frame opens the correct screen. See omega_setup.dart.
Full example
example/lib/omega/omega_setup.dart (routes) + auth_flow.dart (navigation emits) + auth_page.dart (UI).