Когда пользователь открывает приложение более одного раза, оно предназначено для отправки ему на экран входа в систему, но сначала на несколько секунд показывает экран регистрации, а затем переходит к экрану входа в систему, см. код ниже:
Код: Выделить всё
@Composable
fun Navigation() {
val navController = rememberNavController()
val onBoardingViewModel = hiltViewModel()
val isTheFirstTimeInstalled = onBoardingViewModel.onBoardingState.collectAsStateWithLifecycle()
val startDest = getStartDest(isTheFirstTimeInstalled.value)
NavHost(
navController = navController,
startDestination = startDest,
enterTransition = { slideIn() },
exitTransition = { slideOut() },
) { /* some code */ }
}
Код: Выделить всё
@HiltViewModel
class OnBoardingViewModel @Inject constructor(
private val dataStore: PreferencesDatastore
) : ViewModel() {
private val _onBoardingState = MutableStateFlow(false)
val onBoardingState = _onBoardingState.asStateFlow()
init {
viewModelScope.launch(Dispatchers.IO) {
_onBoardingState.value = dataStore.getOnBoardingState().first()
}
}
fun setFirstTimeInstalled() {
viewModelScope.launch(Dispatchers.IO) {
dataStore.saveOnBoardingState(true)
}
}
}
Я только пытался определить начальный пункт назначения, вызывая мою функцию «getStartDest», которая в основном получает маршрут.
Подробнее здесь: https://stackoverflow.com/questions/784 ... navigation
Мобильная версия