Как обновить состояние с помощью функции копированияAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как обновить состояние с помощью функции копирования

Сообщение Anonymous »

Мое состояние пользовательского интерфейса

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

data class LoginUiState(
val loginModel: LoginModel = LoginModel(),
) : UiState
Моя модель представления

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

@HiltViewModel
class LoginViewModel @Inject constructor() : BaseViewModel() {

override fun handleUiEvent(uiEvent: UiEvent) {
when (uiEvent) {
is LoginUiEvent.LoadScreenData -> {
loadScreenData()
}

is LoginUiEvent.OnClickLogin -> {
onClickLogin()
}
}
}

private fun loadScreenData() {
updateState { currentState ->
currentState.value = LoginUiState(LoginModel("login", "password"))
}
}

private fun onClickLogin() {
updateState { currentState ->
currentState.value = currentState.value?.copy(loginModel = LoginModel(login = "d"))
}
}
}
Моя BaseViewModel

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

abstract class BaseViewModel : ViewModel() {
private var _uiState = mutableStateOf(null)
val uiState: State = _uiState

abstract fun handleUiEvent(uiEvent: UiEvent)

fun updateState(block: (state: MutableState) -> Unit) {
block.invoke(_uiState)
}
}

Как обновить только поле «логин» в модели входа в систему, но без изменения поля «пароль». Моя функция "onClickLogin" работает не очень хорошо, потому что я не знаю, как ее сделать

Подробнее здесь: https://stackoverflow.com/questions/781 ... y-function
Ответить

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

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

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

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

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