В моей MainActivity мне нужно прочитать некоторые значения DataStore, чтобы решить, следует ли мне показывать LoginScreen или главный экран, поэтому я включил заставку перед вызовом onCreate(). Затем я использую runBlocking для получения значений и установки startDestination, как вы можете видеть ниже. Я ожидаю, что KeepOnScreenCondition покажет заставку, пока блокировка запуска устанавливает пункт назначения. Тем не менее, кажется, что он все равно исчезает достаточно рано, когда сначала отображается экран входа в систему (очень короткое время), а затем перемещается на главный экран (как и должно быть в моем случае).
Что я такое здесь отсутствует? Означает ли это, что блокируется только блок LaunchedEffect?
var isLoadingDataStoreTokens by remember { mutableStateOf(true) }
var startDestination : Destination by remember {
mutableStateOf(
LoginScreenDestination
)
}
val tokenManager: AuthTokenManager by inject()
LaunchedEffect(Unit) {
runBlocking {
val authToken = tokenManager.getBearerToken().first()
val isGuest = tokenManager.isGuest().first()
startDestination =
if (authToken != null && isGuest != null) DissertationsScreenDestination else LoginScreenDestination
isLoadingDataStoreTokens = false
}
}
splashScreen.setKeepOnScreenCondition {
!isLoadingDataStoreTokens
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... estination