Contenido del curso
Personalización de la UI con Material Design
Composición de layouts en Jetpack Compose
- 6

Modelo de datos para una to do app
18:48 min - 7

Creación de Componentes UI en Jetpack Compose: Summary y Task Item
17:36 min - 8

HomeScreen con Scaffold en Jetpack Compose
23:16 min - 9

Creación de un Arco de Progreso Animado en Compose
14:39 min - 10

Gestión de Acciones y Estados en ViewModel de Android
23:14 min - 11

Formateo y Ajustes Finales en Pantalla Home de To Do App
Viendo ahora
Construcción de funcionalidades
Navegación en Jetpack Compose
Creación de Bases de datos y dependencias
Finalización de la app
Formateo y Ajustes Finales en Pantalla Home de To Do App
Resumen
Cuando construyes una pantalla principal en Jetpack Compose, los últimos detalles marcan la diferencia entre una interfaz funcional y una experiencia pulida. Aquí ajustarás el HomeScreenViewModel de tu To-do App para mostrar la fecha local formateada, mover mensajes a recursos de string reutilizables y equilibrar las proporciones visuales con weight.
¿Cómo mostrar la fecha local formateada en HomeScreenViewModel?
La primera tarea pendiente es traer la fecha del dispositivo y darle un formato legible para el usuario. Dentro del state, usas state.copy para mantener la información existente y actualizar solo el campo date.
La fecha la obtienes con LocalDate.now y, mediante un bloque let, aplicas DateTimeFormatter.ofPattern para definir cómo se verá en pantalla. El patrón incluye el día de la semana, el mes, el día en número y el año.
¿Qué hace DateTimeFormatter.ofPattern? Convierte un objeto de fecha en un string con el formato que tú definas. Por ejemplo, puedes mostrar martes, octubre 22, 2024 en lugar de la fecha cruda del sistema.
Un detalle importante: los días deben ir en minúscula dentro del patrón para que el formateo funcione correctamente. Después aplicas format.it para obtener el resultado final.
¿Por qué usar copy en lugar de reasignar el state?
Usar copy te permite preservar el resto de propiedades del state sin perder información. Si reemplazaras todo el homeState, perderías datos como el resumen de tareas o el progreso. Con copy, solo modificas la fecha y el resto queda intacto.
¿Cómo mover mensajes a string resources reutilizables?
El mensaje de resumen estaba quemado dentro del ViewModel, lo que dificulta cambiarlo o traducirlo. La solución es moverlo a un recurso de string y dejar que el composable lo arme.
Dentro del HomeScreenViewModel, ahora solo envías el tamaño en formato string. La lógica de presentación se traslada al composable summaryInfo, donde usas stringResource para obtener el texto desde los recursos.
Los pasos concretos son:
- Crear un recurso llamado
summary_infocon el contenidoYou have %s pending tasks. - Pasar el
taskSummarycomo argumento para que reemplace el marcador%s. - Eliminar el mensaje original del ViewModel y dejar solo el dato numérico.
¿Qué es %s en un string resource? Es un marcador de posición que se reemplaza por un valor en tiempo de ejecución. Te permite construir mensajes dinámicos sin concatenar strings manualmente.
Este enfoque separa la lógica de los textos visibles, algo clave si más adelante quieres soportar varios idiomas o cambiar el copy sin tocar código.
¿Cómo equilibrar proporciones con weight en Compose?
La última pieza es visual. La sección de fecha y resumen competía con la de progreso por el espacio disponible, y el balance no se sentía natural.
La solución es asignar weight a cada sección dentro del contenedor. La sección de título y resumen recibe un peso de 1.5, mientras que la sección de progreso recibe un peso de 1. Esto significa que el bloque izquierdo ocupa un poco más de la mitad del ancho disponible.
¿Cómo funciona el modificador weight?
El modificador weight distribuye el espacio sobrante entre los elementos hijos de un Row o Column según la proporción que indiques. Si un elemento tiene 1.5 y otro tiene 1, el primero recibe 1.5 veces más espacio que el segundo.
Al probar la pantalla, el resultado muestra la fecha formateada del dispositivo martes, octubre 22, 2024, junto con el mensaje You have 20 pending tasks. Si modificas el número de tareas, el texto se actualiza automáticamente gracias al string resource.
Con estos ajustes, la pantalla principal del To-do App queda 100% completada y lista para integrarse con las siguientes funcionalidades: visualización y creación de tareas. ¿Cómo organizas tú los textos y proporciones en tus pantallas Compose? Cuéntame en los comentarios.