Skip to content

Instantly share code, notes, and snippets.

@fvilarino
Created April 20, 2024 22:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fvilarino/959e0338a8fdc8571eabf4189828d19d to your computer and use it in GitHub Desktop.
Save fvilarino/959e0338a8fdc8571eabf4189828d19d to your computer and use it in GitHub Desktop.
Shared Elem - Layout Wrapper
@Composable
fun Home(modifier: Modifier = Modifier) {
val navController = rememberNavController()
// 1
SharedTransitionLayout(
modifier = modifier,
) {
NavHost(
navController = navController,
startDestination = "list",
modifier = Modifier.fillMaxSize(),
) {
composable(
route = "list"
) {
ListScreen(
onItemClick = { item ->
val encoded = URLEncoder.encode(item, "UTF-8")
navController.navigate("details/$encoded")
},
modifier = Modifier.fillMaxSize(),
)
}
composable(
route = "details/{url}"
) { backstackEntry ->
val encoded = backstackEntry.arguments?.getString("url") ?: error("No URL")
val url = URLDecoder.decode(encoded, "UTF-8")
DetailsScreen(
url = url,
onClick = { navController.popBackStack() },
modifier = Modifier.fillMaxSize(),
)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment