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" работает не очень хорошо, потому что я не знаю, как ее сделать
Мое состояние пользовательского интерфейса [code]data class LoginUiState( val loginModel: LoginModel = LoginModel(), ) : UiState [/code] Моя модель представления [code]@HiltViewModel class LoginViewModel @Inject constructor() : BaseViewModel() {
override fun handleUiEvent(uiEvent: UiEvent) { when (uiEvent) { is LoginUiEvent.LoadScreenData -> { loadScreenData() }
is LoginUiEvent.OnClickLogin -> { onClickLogin() } } }
private fun onClickLogin() { updateState { currentState -> currentState.value = currentState.value?.copy(loginModel = LoginModel(login = "d")) } } } [/code] Моя BaseViewModel [code]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) } }
[/code] Как обновить только поле «логин» в модели входа в систему, но без изменения поля «пароль». Моя функция "onClickLogin" работает не очень хорошо, потому что я не знаю, как ее сделать