Page cover image

Implementación de los viewmodel

Cuando usamos esta arquitectura, los viewmodel cargan como dependencias los use cases que va a utilizar la ventana a la que están vinculados.

Siguiendo el ejemplo de la ventana de usuarios tendríamos el siguiente ViewModel

import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch

class UsersScreenViewModel(
    private val getUsersUseCase: GetUsersUseCase,
    private val deleteUserUseCase: DeleteUserUseCase
) : ViewModel() {

    // La lista de usuarios se carga usando el getUsersUseCase
    private var _users = getUsersUseCase()
        .stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyList())

    val users: StateFlow<List<User>> = _users

    fun removeProduct(id: String) {
        viewModelScope.launch {
            // Invoca el deleteUserUseCase
            deleteUserUseCase(id)
        }
    }
}

Última actualización

¿Te fue útil?