Использование navigation-compose с deeplink внутри LazyColumn
Я читала статью об обработке диплинков с помощью navigation-compose, но не нашла ничего полезного для своего use-case — для навигации внутри LazyColumn. У меня есть следующий основной Composable, который я хочу сделать корнем графa (хочу, чтобы он был хостом для NavHost):
@Composable
private fun MainScreenContainer(
mainState: state,
...
) {
val navController = rememberNavController()
MainTheme {
Box(
modifier = Modifier.fillMaxSize()
) {
val listState = rememberLazyListState()
LazyColumn(
state = listState,
modifier = Modifier.fillMaxSize()
) {
mainScreenContent(
state = mainState,
...
)
}
StickyToolbar(
...
)
}
}
}
и вот оставшийся код:
private fun LazyListScope.mainScreenContent(
mainState: MainState,
...
) {
header(...)
overview(...)
myCard(...)
footer()
}
private fun LazyListScope.myCard(
...
) {
item {
ContentContainer(
modifier = Modifier.padding(vertical = MainTheme.spacing.medium)
) {
MyCardStateless(
onCardClick = myCardViewModel::onCardClick,
...
)
}
}
}
@Composable
fun MyCardStateless(
onCardClick: () -> Unit,
...
) {
Column(modifier = modifier) {
Card(
modifier = Modifier.fillMaxWidth()
.clickable(onClick = onCardClick)
) { ... }
}
}
И внутри MyCardViewModel я использовала переход к другому фрагменту, используя обычный Navigation Component:
fun onCardClick() {
navigate(
MainFragmentDirections.actionMainFragmentToDescriptionFragment()
)
}
@AndroidEntryPoint
class DescriptionFragment : ...() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
...
setContent {
DescriptionStateful(...)
}
}
...
}
Но теперь я хочу добавить два deeplink-a (deeplink «myapp://mycard» — который бы вёл к MyCardStateless и «myapp://description» — который бы вёл открывал DescriptionFragment или DescriptionStateful) и я хотела бы обрабатывать навигацию с помощью navigation-compose. Это вообще возможно? И если да, то как?