Я прохожу курс «Расширенное состояние и побочные эффекты в Jetpack Compose», и в конце этой главы у меня есть этот код.
@Composable
fun ToDestinationUserInput(onToDestinationChanged: (String) -> Unit) {
val editableUserInputState = rememberEditableUserInputState(hint = "Choose Destination")
...
val currentOnDestinationChanged by rememberUpdatedState(onToDestinationChanged)
LaunchedEffect(editableUserInputState) {
snapshotFlow { editableUserInputState.text }
.filter { !editableUserInputState.isHint }
.collect {
currentOnDestinationChanged(editableUserInputState.text)
}
}
}
и редактируемый UserInputState выглядит следующим образом:
class EditableUserInputState(private val hint: String, initialText: String) {
var text by mutableStateOf(initialText)
val isHint: Boolean
get() = text == hint
...
}
Правда ли, что после первой из двух следующих строк какой-то другой поток может изменить editableUserInputState.text и часть фильтра проверит обновленное значение вместо одного мы попали в первую очередь?
snapshotFlow { editableUserInputState.text }
.filter { !editableUserInputState.isHint }
Подробнее здесь: https://stackoverflow.com/questions/792 ... ck-compose