Skip to content

wrsx/compose-router

Repository files navigation

Compose Router is a navigation builder for Jetpack Compose. The project is Multiplatform, but bindings only exist for Android right now.

Define a set of screens:

object Root : NavigationRoot
object Home : ChildScreenOf<Root>
object Profile : ChildScreenOf<Root>
object Settings : ChildScreenOf<Profile>  

Define a navigation graph:

val navigator = rememberNavigator<Root>()

Router(navigator) {
    screen<Home> {
        HomeScreen(navigator)
    }

    screen<Profile> {
        ProfileScreen(navigator)
    }
}

💡 Compose Router will automatically navigate to the first screen positionally.

Navigate to a screen:

navigator.navigate(Profile)

Create a natural navigation hierarchy by nesting Routers:

val navigator = rememberNavigator<Root>()

Router(navigator) {
    screen<Home> { .. }

    screen<Profile> {
        val profileRouter = rememberNavigator()

        Router(profileRouter) {
            screen<Settings> { .. }
        }
    }
}

Compose Router is type-safe at the graph declaration:

Router(navigator) {
    screen<Home> { .. }

    screen<Profile> { .. }

    screen<Settings> {
        // Error: Settings is not a child screen of Root  
    }
}

and during navigation:

// Error: Settings is not a child screen of Root  
navigator.navigate(Settings)

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages