Проблема с навигационной библиотекой 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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