NavEaseHost

fun NavEaseHost(graph: NavEaseGraph, onExitRequest: () -> Unit = {}, enableSharedTransitions: Boolean = false, navTransition: NavTransition = NavTransition.Push)

Zero-rebuild navigation host — DSL graph variant.

Pass a NavEaseGraph built with navEaseGraph. No code generation required.

Parameters

graph

The navigation graph built via navEaseGraph.

onExitRequest

Called when back is pressed at the root screen.

enableSharedTransitions

true to enable shared-element transitions.

navTransition

Default screen transition. Defaults to NavTransition.Push.


fun <Root : NavEaseRoot> NavEaseHost(start: NavEaseRoot, onExitRequest: () -> Unit = {}, enableSharedTransitions: Boolean = false, navTransition: NavTransition = NavTransition.Push, screens: NavEaseScreenScope<Root>.() -> Unit)

Zero-rebuild navigation host — ActivityScreen variant.

Register screens via the trailing screens lambda using NavEaseScreenScope.add. Each ActivityScreen subclass receives a typed navKey in its Content override — no casting or .xxxArgs() needed.

class DetailScreen : ActivityScreen<AppScreens.Detail>() {
@Composable
override fun Content(navKey: AppScreens.Detail, navController: NavController) {
Text(navKey.id) // ← typed, no casting
}
}

@Composable fun App() {
NavEaseHost<AppScreens>(start = AppScreens.Home) {
add(HomeScreen())
add(AboutScreen())
add(DetailScreen())
}
}

Parameters

start

The NavKey instance placed on the back stack first.

onExitRequest

Called when back is pressed at the root screen.

enableSharedTransitions

true to enable shared-element transitions.

navTransition

Default screen transition. Defaults to NavTransition.Push.

screens

Registration block — call NavEaseScreenScope.add for each screen.

Type Parameters

Root

The sealed NavKey root class (e.g. AppScreens). Must be specified explicitly: NavEaseHost<AppScreens>(...).


inline fun <Root : NavEaseRoot> NavEaseHost(start: NavEaseRoot, noinline onExitRequest: () -> Unit = {}, enableSharedTransitions: Boolean = false, navTransition: NavTransition = NavTransition.Push)

Typed auto-discover navigation host — screens whose NavKey belongs to the sealed root class Root are discovered automatically from the global NavEaseAutoRegistry, which is populated by KSP-generated code.

No explicit { add(XxxScreen()) } lambda needed — just supply the type parameter and the start destination:

// Root host — discovers all screens whose NavKey is an AppScreens subtype
@Composable fun App() {
NavEaseHost<AppScreens>(start = AppScreens.Splash, onExitRequest = { finish() })
}

// Nested inner host — discovers only WizardStep screens
NavEaseHost<WizardStep>(
start = WizardStep.SelectRole,
onExitRequest = { outerNav.back() },
navTransition = NavTransition.Push,
)

Parameters

start

The NavKey instance placed on the back stack first.

onExitRequest

Called when back is pressed on the root screen.

enableSharedTransitions

true to enable shared-element transitions.

navTransition

Default screen-to-screen animation.

Type Parameters

Root

The sealed NavKey root class whose screens to include (e.g. AppScreens or WizardStep).