
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)
}
}
}
AnteriorImplementación de los casos de uso de la aplicaciónSiguienteInyección de dependencias con Koin
Última actualización
¿Te fue útil?