Yusuf Ibragimov
06/05/2025, 5:57 AMCompositionLocal
to provide a NavController
across my composables, and it works well for basic navigation.
But I’m curious about real-world experience and advanced use cases:
• Is using CompositionLocal
for NavController
still considered idiomatic in larger Compose apps?Yusuf Ibragimov
06/05/2025, 5:59 AMval LocalNavController = compositionLocalOf<NavHostController> {
error("No NavController provided")
}
@Composable
fun MyApp() {
val navController = rememberNavController()
CompositionLocalProvider(LocalNavController provides navController) {
Scaffold {
NavHost(
navController = navController,
startDestination = "home"
) {
composable("home") { HomeScreen() }
composable("details") { DetailScreen() }
}
}
}
}
@Composable
fun HomeScreen() {
val navController = LocalNavController.current
Button(onClick = { navController.navigate("details") }) {
Text("Go to Details")
}
}
Yusuf Ibragimov
06/05/2025, 5:59 AMCsaba Szugyiczki
06/05/2025, 7:28 AMCsaba Szugyiczki
06/05/2025, 7:30 AMCsaba Szugyiczki
06/05/2025, 7:32 AMYusuf Ibragimov
06/05/2025, 8:11 AMCsaba Szugyiczki
06/05/2025, 8:16 AMCsaba Szugyiczki
06/05/2025, 8:17 AMYusuf Ibragimov
06/05/2025, 8:31 AM