И я хочу избежать работы с навигацией в составных функциях, которые представляют мои экраны. Поэтому я хочу избавиться от такого кода в своих составных функциях:
Код: Выделить всё
@RootNavGraph(start = true)
@Destination
@Composable
fun Welcome(
navController: DestinationsNavigator,
viewModel: WelcomeViewModel = hiltViewModel()
) {
LaunchedEffect(key1 = true) {
viewModel.eventFlow.collect { event ->
when (event) {
is WelcomeViewModel.Event.NavigateToProfile -> {
navController.navigate(ProfileDestination)
}
/* other navigation events */
}
}
}
WelcomeView()
}
Код: Выделить всё
@HiltViewModel
class WelcomeViewModel @Inject constructor(
private val navigator: Navigator
) : ViewModel() {
/* some variables */
fun onSomeAction() {
/* do some calculations */
navigator.navigateToProfile(param)
}
/* other functions */
}
Источник: https://stackoverflow.com/questions/781 ... -viewmodel