
ViewModel
El ViewModel es un componente esencial en la arquitectura de Android, particularmente en Jetpack Compose, ya que permite separar la lógica de negocio y los datos del ciclo de vida de la interfaz gráfica.
Los ViewModel están diseñados para:
Almacenar y gestionar datos de estado relacionados con la UI.
Sobrevivir a cambios de configuración como rotación de pantalla.
Facilitar la conexión entre la UI y la lógica de negocio.
En Jetpack Compose, un ViewModel permite emitir estados observables hacia las composables de forma reactiva.
Configuración
Incluye la siguiente dependencia en tu archivo build.gradle:
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7")Arquitectura CLEAN
Si seguimos la arquitectura CLEAN, los ViewModel deben declararse en el paquete presentation.viewmodel
com.example.myapp
│
├── data
│ ├── model
│ ├── repository
│ ├── source
│ │ ├── local
│ │ └── remote
│ └── mapper
│
├── domain
│ ├── model
│ ├── repository
│ └── usecase
│
├── presentation
│ ├── ui
│ │ ├── components
│ │ ├── screens
│ │ │ ├── home
│ │ │ ├── profile
│ │ │ └── settings
│ ├── navigation
│ └── viewmodel
│
├── di
│
└── utilsCrear un ViewModel
Un ViewModel se utiliza para manejar algún estado. Todo ViewModel debe declarar las siguientes partes:
Variable de estado mutable (
MutableStateFlow): define el estado que gestiona elViewModel. Este estado es mutable y debe declararse privado para que los@Composableno puedan acceder al mismo directamente.Variable de estado inmutable (
StateFlow): Es una derivación inmutable del estado anterior, este es público ya queFunciones de acciones del estado
El ViewModel de cada ventana se declara como parámetro de su función @Composable y se instancia por defecto usando el método viewModel().
Ejemplo de Login Screen
Por ejemplo, podríamos modificar la ventana de Login para que use un ViewModel
LoginScreenViewModel
LoginScreen
Última actualización
¿Te fue útil?