Navipose

Compose desktop navigation library

Features

Now navipose supports basic screen navigation between few screens

Examples

At first you should create something like simple graph

//Each screen inside graph should implement IScreen interface
sealed class Screens: IScreen {
    object Main : Screens()
    object SubScreen : Screens()
}

Than create navigator inside your composable function

//Specify start screen
Navigator(Screens.Main) {
  //Add screens to navigation graph
  addScreen(Screens.Main) { MainScreen(this) }
  addScreen(Screens.SubScreen) { SubScreen(this)}
}

And your composable functions should be like that

@Composable
fun MainScreen(navigator: INavigator) {
  //On Navigate to second screen on click
  Button(onClick = { navigator.navigate(Screens.SubScreen) }) {
    Text("Hello, go to subScreen")
  }
}

@Composable
fun SubScreen(navigator: INavigator) {
  //Navigate back
  Button(onClick = { navigator.goBack() }) {
    Text("Go back")
  }
}

Future

Future features

  • Maven central or jitpack repository
  • Stub screen on wrong navigation
  • Navigation arguments
  • Complete basic navigation flow
  • Back results
  • Controller support
  • Utilities functions for lifecycle/navigation
  • Nested/Parallel navigation support (now it’s possible, but was not planned)

GitHub

View Github