Chuleta rápida de Remember en Jetpack Compose

1. Básicos de estado

Función Descripción Ejemplo rápido
remember { … } Guarda el estado en recomposición mientras el composable esté en el árbol. val count = remember { mutableStateOf(0) }
rememberSaveable { … } Igual que remember, pero persiste en recreaciones de actividad (rotación, proceso). val count = rememberSaveable { mutableStateOf(0) }

2. Corutinas y lambdas

Función Descripción Ejemplo rápido
rememberCoroutineScope() Devuelve un CoroutineScope ligado al ciclo de vida del composable. val scope = rememberCoroutineScope()
rememberUpdatedState(value) Mantiene siempre la última versión de un valor dentro de efectos (LaunchedEffect, etc.). val onClick by rememberUpdatedState(newValue = action)

3. Animaciones

Función Descripción Ejemplo rápido
rememberInfiniteTransition() Animaciones que se repiten indefinidamente. val alpha by infinite.animateFloat(... )
rememberTransition(state) Transiciones entre estados definidos. val transition = updateTransition(targetState, label="")
rememberSplineBasedDecay() Animación tipo fling con decaimiento. val decay = rememberSplineBasedDecay<Float>()

4. Scroll y listas

Función Descripción Ejemplo rápido
rememberScrollState() Guarda la posición de scroll en Column / Row. val scroll = rememberScrollState()
rememberLazyListState() Guarda el estado de scroll en LazyColumn/LazyRow. val listState = rememberLazyListState()
rememberLazyGridState() Estado de scroll en LazyVerticalGrid o LazyHorizontalGrid. val gridState = rememberLazyGridState()
rememberPagerState() Estado de un pager (HorizontalPager / VerticalPager). val pagerState = rememberPagerState()

5. Gestos e interacción

Función Descripción Ejemplo rápido
rememberDraggableState(onDelta) Controla los desplazamientos en gestos de arrastre. val dragState = rememberDraggableState { delta -> … }
rememberSwipeableState(initialValue) Estado de un componente deslizable (ej: BottomSheet). val sheetState = rememberSwipeableState(0)
rememberPullRefreshState(refreshing, onRefresh) Estado para pull-to-refresh. val refreshState = rememberPullRefreshState(refreshing, { … })
rememberNestedScrollInteropConnection() Conexión de scroll con vistas clásicas Android. val connection = rememberNestedScrollInteropConnection()

6. Otros especializados

Función Descripción Ejemplo rápido
rememberSystemUiController() (Accompanist) Controla status bar y nav bar. val controller = rememberSystemUiController()
rememberInsetsPaddingValues() (Accompanist, deprecated) Padding según insets del sistema. val padding = rememberInsetsPaddingValues()
rememberHapticFeedback() Acceso al motor de vibración/háptica. val haptic = LocalHapticFeedback.current
rememberClipboardManager() Acceso al portapapeles del sistema. val clipboard = LocalClipboardManager.current

🎓 Ejemplo práctico integrando varios remember

 1@Composable
 2fun DemoRememberScreen() {
 3    val count = rememberSaveable { mutableStateOf(0) }
 4    val scrollState = rememberScrollState()
 5    val scope = rememberCoroutineScope()
 6    val transition = rememberInfiniteTransition()
 7
 8    val alpha by transition.animateFloat(
 9        initialValue = 0f,
10        targetValue = 1f,
11        animationSpec = infiniteRepeatable(
12            animation = tween(1000),
13            repeatMode = RepeatMode.Reverse
14        )
15    )
16
17    Column(
18        modifier = Modifier
19            .fillMaxSize()
20            .verticalScroll(scrollState),
21        horizontalAlignment = Alignment.CenterHorizontally
22    ) {
23        Text("Contador: ${count.value}", modifier = Modifier.alpha(alpha))
24
25        Button(onClick = {
26            scope.launch { count.value++ }
27        }) {
28            Text("Incrementar")
29        }
30    }
31}