Easiest routing for compose-jb
Supported targets:
Installation
repositories {
mavenCentral()
}
dependencies {
implementation("io.github.artemmey:compose-jb-routing:0.9.5")
}
Usage
- Declare your app routes:
object MyAppRoute {
const val Home = "/"
const val Articles = "/articles"
const val Article = "$Articles/{id}"
}
- Configure routing
@Composable
fun App() {
initRouting(MyAppRoute.Home)
Router {
route(MyAppRoute.Home, exact = true) { Home() }
route(MyAppRoute.Articles) { Articles() }
}
}
{
Router {
route(MyAppRoute.Articles, exact = ) { ArticleList() }
route(MyAppRoute.Article) { Article(param()) }
}
}
- Perform routing
@Composable
fun ArticleList() {
articles.forEach {
ArticlePreview(onClick = {
routing.push(MyAppRoute.Article, "id" to it.id)
println(routing.history)
})
}
}
@Composable
fun Article(id: String) {
BackButton(onClick = {
routing.pop()
})
}
- Make redirects
@Composable
fun PrivateRoute() {
if (!auth) {
Redirect("${MyAppRoute.Login}?ref=${routing.location}")
return
}
}
@Composable
{
LoginButton(onClick = {
performLogin()
routing.location.query()[]
?.let { routing.redirect(it) }
?: routing.pop()
})
}