Incular logoIncular
API ReferenceNavigation & Scrolling

Route & Page

Route descriptors, settings, transitions, and declarative pages.

Route

TypePurpose
RouteStack entry with settings, presentation, and transition
RouteSettingsName and arguments payload
RouteTransitionFade / slide / scale / none animations
RoutePresentationStacked vs overlay-hosted placement
RouteResultCompletion payloads returned on pop
RestorableRoutePersistable route handle
PageKeyed declarative route description
PageRouteBuilderPage with custom transition
Overlay / OverlayEntryImperative overlay content
RouteOutletMount a Navigator as stack content
use incular::prelude::*;

fn main() {
    let registry = RouteRegistry::new();
    println!("resolved: {}", registry.resolve("/settings").is_some());
    let id = RestorableRouteId::new("counter").expect("route id");
    println!("route id: {}", id.as_str());
    let scope = RouteScopeKey::new("main").expect("scope key");
    println!("scope: {}", scope.as_str());
}

Navigator::push(route) -> RouteId, push_page(page), replace(route) -> Option<Route>, lifetime_of(id) -> Option<RouteLifetime> (RouteLifetimeSubscription keeps on_ended callbacks alive).

Registry and restorable routes

RouteRegistry::new() owns path builders; register, resolve, navigate, register_restorable, navigate_restorable, and restore_navigator drive declarative and restorable stacks as exercised in the runnable program above.

RestorableRouteId (stable persisted id; Empty / ContainsControlCharacter rejected, RestorableRouteIdError), RestorableRouteBuildError (InvalidArguments / BuildFailed), RestorableRouteRegistrationError (invalid / duplicate id), RestorableNavigationError (UnknownRoute / BuildFailed). RouteScopeKey (single-segment stable key) with RouteScopeKeyError. PageStorage / PageStorageBucket (write_state / read_state / remove_state / clear) / PageStorageKey / PageStorageIdentifier keep keyed storage independent of the element tree. Outlet mounting: OutletId, OutletPlacement::of(presentation, visible) (Stacked vs ExternalOverlay), OutletError, OutletAttachError (SelfAttachment / Cycle / AlreadyAttached); per-route focus via RouteFocusOwner / RouteFocusState (save_focused, restore_saved, forget).

Page

Declarative route descriptions reconciled by key in set_pages:

use incular::prelude::*;

fn main() {
    let nav = Navigator::new();
    let page = Page::new("home", Text::new("Home"));
    nav.set_pages(vec![page]).expect("pages");
    println!("can pop: {}", nav.can_pop());
}

Overlay / OverlayEntry host imperative overlay content; RouteLifetime scopes per-route tasks via RouteTaskBinding::bind(&scope, &lifetime). RouteOutlet mounts one Navigator as stack content with per-route focus and task bindings.

Related: Navigator, Restoration.

On this page