Kashismails
10/04/2024, 3:59 PMFernando
10/07/2024, 10:16 AMFernando
10/07/2024, 10:45 AMNavigationController is null
and a crash on Android. Is there something that I might be doing wrong?
My 2 screens look like this ( just changed the name for the second)
object MovieScreenRoute : VoyantRoute {
@Composable
override fun content() {
val navController = rememberKMPNavController()
Box(modifier = Modifier.fillMaxSize()) {
Text(
"Movie Screen",
modifier = Modifier.padding(16.dp).align(Alignment.Center).clickable {
navController.navigate(MovieDetailsScreenRoute)
})
}
}
}
My Entrypoint:
val navController = rememberNavController()
NavHost(navController = navController, startDestination = MovieScreenRoute) {
composable<MovieScreenRoute> { backStackEntry ->
val searchDomainModel = backStackEntry.toRoute<MovieScreenRoute>()
searchDomainModel.content()
}
composable<MovieDetailsScreenRoute> { navBackStackEntry ->
val movieDetailsScreenRoute = navBackStackEntry.toRoute<MovieDetailsScreenRoute>()
movieDetailsScreenRoute.content()
}
}
Kashismails
10/07/2024, 10:46 AMKashismails
10/07/2024, 10:47 AMFernando
10/07/2024, 12:58 PMNavigationController is null
While on Android it crashes, my compose and compose-navigation version are 1.7.0-beta01
Process: com.feernandooff.chronoguides, PID: 938
java.lang.IllegalStateException: You must call setGraph() before calling getGraph()
at androidx.navigation.NavController.getGraph(NavController.kt:103)
at androidx.navigation.NavController.generateRouteFilled(NavController.kt:1656)
at androidx.navigation.NavController.navigate(NavController.kt:2421)
at androidx.navigation.NavController.navigate$default(NavController.kt:2416)
at com.kashif.voyant_navigation_compose.AndroidNavController.navigate(Extensions.android.kt:10)
at feature.settings.MovieScreenRoute.content$lambda$2$lambda$1$lambda$0(SettingsScreen.kt:86)
at feature.settings.MovieScreenRoute.$r8$lambda$1cIKXxKGeI1xTtqiPBB0tKQ7N4Q(Unknown Source:0)
at feature.settings.MovieScreenRoute$$ExternalSyntheticLambda1.invoke(Unknown Source:2)
at androidx.compose.foundation.ClickableNode$clickPointerInput$3.invoke-k-4lQ0M(Clickable.kt:639)
Kashismails
10/07/2024, 12:59 PMFernando
10/07/2024, 1:09 PMKashismails
10/07/2024, 1:17 PMKashismails
10/07/2024, 3:18 PMFernando
10/07/2024, 3:37 PMjava.lang.IllegalStateException: You must call setGraph() before calling getGraph()
at androidx.navigation.NavController.getGraph(NavController.kt:103)
at androidx.navigation.NavController.generateRouteFilled(NavController.kt:1656)
at androidx.navigation.NavController.navigate(NavController.kt:2421)
Kashismails
10/07/2024, 3:38 PMFernando
10/07/2024, 3:45 PMfun koinConfiguration() = koinApplication {
modules(sharedModule())
}
@Composable
fun App() {
KoinApplication(application = { koinConfiguration() }) {
ChronoGuidesTheme {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = MovieScreenRoute) {
composable<MovieScreenRoute> { backStackEntry ->
val searchDomainModel = backStackEntry.toRoute<MovieScreenRoute>()
searchDomainModel.content()
}
composable<MovieDetailScreenRoute> { navBackStackEntry ->
val movieDetailsScreenRoute = navBackStackEntry.toRoute<MovieDetailScreenRoute>()
movieDetailsScreenRoute.content()
}
}
}
}
}
Screens:
@Serializable
object MovieScreenRoute : VoyantRoute {
@Composable
override fun content() {
val navController = rememberKMPNavController()
Box(modifier = Modifier.fillMaxSize()) {
Button(onClick = {}) {
Text("Button")
}
Text(
"Movie Screen",
modifier = Modifier.padding(16.dp).align(Alignment.Center).clickable {
navController.navigate(MovieDetailScreenRoute)
})
}
}
}
@Serializable
object MovieDetailScreenRoute : VoyantRoute {
@Composable
override fun content() {
val navController = rememberKMPNavController()
Box(modifier = Modifier.fillMaxSize()) {
Text(
"Detail Screen",
modifier = Modifier.padding(16.dp).align(Alignment.Center).clickable {
navController.navigate(MovieScreenRoute)
})
}
}
}
Libraries:
compose-version = "1.7.0-beta02"
compose-navigation = "2.8.0-alpha10"
material-navigation = { module = "org.jetbrains.compose.material:material-navigation", version.ref = "compose-version" }
navigation-compose = { module = "org.jetbrains.androidx.navigation:navigation-compose", version.ref = "compose-navigation" }
@Kashismails Let me know if I can be of any help and again, thank you so much for your workFernando
10/07/2024, 3:46 PMKashismails
10/07/2024, 3:50 PMKashismails
10/07/2024, 4:34 PM1.7.0-rc01
Fernando
10/07/2024, 4:55 PMFernando
10/07/2024, 4:55 PMKashismails
10/07/2024, 5:06 PMKashismails
10/07/2024, 9:36 PMFernando
10/10/2024, 10:31 AM