Я достиг этого Экран из навигационного графа startdestination «LoginScreen». Это делается для того, чтобы уточнить, что MainActivity просто содержит ссылку на навигацию и самостоятельно выполняет навигацию из навигационного хоста.
ViewModel:
Код: Выделить всё
private val _uiState = MutableStateFlow(LoginStateUI())
val uiState: StateFlow = _uiState.asStateFlow()
fun updateState (value:String,prop:String){
_uiState.update {
when(prop){
"email" -> it.user.email = value
"password" -> it.user.password = value
}
it
}
}
Код: Выделить всё
val viewModel = viewModel(modelClass = LoginViewModel::class.java)
val uiState by viewModel.uiState.collectAsState()
Column() {
OutlinedTextField(value = uiState.user.email, onValueChange = {
(viewModel::updateState)(it, "email")
}, placeholder = {
Text(stringResource(id = R.string.userLabel))
}
)
...
OutlinedTextField(value = uiState.user.password, onValueChange ={
viewModel.updateState(it, "password")
},placeholder= {
Text(stringResource(id = R.string.passwordLabel))
},
visualTransformation = PasswordVisualTransformation()
)
...
}

но сразу же появляется второй входящий триггер изменения с пустой строкой на нем:

Не знаю, что еще я делаю не так.

Я занимаюсь отладкой в Pixer 8 Pro, нацелен на Android 28
Подробнее здесь: https://stackoverflow.com/questions/788 ... lled-twice