אליהו הדס
08/08/2024, 3:05 AMval isFirstTime by vm.isFirstTime.collectAsStateWithLifecycle()
NavHost(
navController = navController,
startDestination = if (isFirstTime) NavGraph.OnBoarding else NavGraph.Home,
Where is my mistake ? When opening the application, OnBoarding it is displayed for half a second then it goes to Home and it's really not prettyMeet
08/08/2024, 3:48 AMאליהו הדס
08/08/2024, 4:08 AMChrimaeon
08/08/2024, 7:21 AMStylianos Gakis
08/08/2024, 7:38 AMאליהו הדס
08/08/2024, 5:39 PMsealed class NavState {
object Loading: NavState()
object FirstTime: NavState()
object NotFirstTime: NavState()
}
and I created a composable that return the correct destination
@Composable
fun composeNavigationApp(
viewModel: NavViewModel
) : NavGraph {
val viewState by viewModel.navState.collectAsState()
return when(viewState) {
NavState.FirstTime -> NavGraph.OnBoarding
NavState.Loading -> NavGraph.Loading
NavState.NotFirstTime -> NavGraph.Home
}
}
אליהו הדס
08/08/2024, 5:40 PMclass NavViewModel(repository: PreferencesRepository) : ViewModel() {
val isFirstTime: Flow<Boolean> = repository.isFirstTime
val navState = isFirstTime.map { isFirstTime ->
if (isFirstTime) {
NavState.FirstTime
} else {
NavState.NotFirstTime
}
}.stateIn(viewModelScope, SharingStarted.Lazily, NavState.Loading)
}
אליהו הדס
08/08/2024, 5:41 PMval navViewModel : NavViewModel = koinViewModel()
NavHost(
navController = navController,
startDestination = composeNavigationApp(viewModel = navViewModel),
Stylianos Gakis
08/08/2024, 6:21 PMאליהו הדס
08/08/2024, 6:23 PMStylianos Gakis
08/08/2024, 6:24 PMStylianos Gakis
08/08/2024, 6:24 PMאליהו הדס
08/08/2024, 6:33 PM@Composable
fun composeNavigationApp(
navController: NavController,
viewModel: NavViewModel
) {
val viewState by viewModel.navState.collectAsState()
LaunchedEffect(viewState) {
when (viewState) {
is NavState.FirstTime -> navController.navigate(NavGraph.OnBoarding)
is NavState.NotFirstTime -> navController.navigate(NavGraph.Home) {
popUpTo(NavGraph.OnBoarding) { inclusive = true }
}
}
}
}
אליהו הדס
08/08/2024, 6:34 PMאליהו הדס
08/08/2024, 6:35 PMNavHost( navController = navController, startDestination = NavGraph.Home
Stylianos Gakis
08/08/2024, 6:37 PM