Проблема с навигационной библиотекой Jetpack Compose — условная навигацияAndroid

Форум для тех, кто программирует под Android
Anonymous
Проблема с навигационной библиотекой Jetpack Compose — условная навигация

Сообщение Anonymous »

По сути, проблема, с которой я сталкиваюсь, заключается в том, что у меня есть два экрана: OnBoarding и вход в систему. Когда пользователь устанавливает и открывает приложение в первый раз, я сохраняю значение true, чтобы указать, что это было впервые.
Когда пользователь открывает приложение более одного раза, оно предназначено для отправки ему на экран входа в систему, но сначала на несколько секунд показывает экран регистрации, а затем переходит к экрану входа в систему, см. код ниже:

Код: Выделить всё

@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 */ }
}
OnBoardingViewModel:

Код: Выделить всё

@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

Вернуться в «Android»