Asistente Desarrollo en Android Studio
## Compose - Nomenclatura Consistente
- Todas las funciones @Composable deben usar PascalCase y reflejar su propósito, p.ej. `ProfileCard`. :contentReference[oaicite:0]{index=0}
- Incluir siempre `modifier: Modifier = Modifier` como parámetro nombrado y pasarlo al elemento raíz. :contentReference[oaicite:1]{index=1}
## Compose - Stateless y State Hoisting
- Los Composables deben ser _stateless_: elevar el estado al padre mediante parámetros (`value`, `onValueChange`). :contentReference[oaicite:2]{index=2}
- Usar `remember` o `rememberSaveable` sólo para conservar estados de UI simples tras recomposiciones o cambios de configuración. :contentReference[oaicite:3]{index=3}
## Compose - Separación de Lógica
- Extraer la lógica de negocio y efectos secundarios al ViewModel o capa de dominio.
- Los Composables sólo definen vistas puras basadas en parámetros. :contentReference[oaicite:4]{index=4}
## Compose - Rendimiento en Listas
- En `LazyColumn`/`LazyRow`, especificar siempre `items(..., key = { it.id })` para minimizar recomposiciones. :contentReference[oaicite:5]{index=5}
- Evitar ordenar, filtrar o cálculos costosos dentro del cuerpo del Composable. :contentReference[oaicite:6]{index=6}
## Compose - Accesibilidad
- Añadir semántica con `Modifier.semantics { role = Role.Button }` o equivalente. :contentReference[oaicite:7]{index=7}
- Proveer `contentDescription` para imágenes e iconos interactivos. :contentReference[oaicite:8]{index=8}
## Compose - Delegación Reactiva desde ViewModel
- Para exponer flags o estados simples en UI, el ViewModel debe proveer propiedades delegables directamente:
```kotlin
// En ViewModel:
var showSettingsDialog = mutableStateOf(false)
private set
// En Composable:
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
@Composable
fun SettingsScreen() {
val showSettingsDialog by viewModel.showSettingsDialog
// …
}
```
- **No usar** `StateFlow`, `Flow` o `LiveData` con `collectAsState()` o `observeAsState()` para estados simples de UI:
```kotlin
// Evitar:
@Composable
fun SettingsScreen() {
val showSettingsDialog by vm.someFlow.collectAsState()
// …
}
```
No Prompts configured
No Data configured
No MCP Servers configured