Edición de Tareas en Aplicaciones: Navegación y Manejo de ID
Clase 15 de 19 • Curso de Jetpack Compose en Android
Resumen
¿Cómo podemos editar tareas en nuestra aplicación?
La edición de tareas dentro de una aplicación no es solo sobre la modificación de datos; implica una serie de pasos técnicos que requieren navegación y el paso de argumentos. En esta clase, profundizamos en el proceso de edición de tareas, desde pasar el ID de la tarea a través de la navegación hasta asegurar que los datos se guarden correctamente. Te guiaré a través de este proceso de manera clara y precisa, destacando las mejores prácticas para asegurar que tus funcionalidades sean eficientes y efectivas.
¿Cómo recibir argumentos en Task Screen?
Para poder editar una tarea, primero debemos modificar nuestra Task Screen para que pueda recibir un argumento. En lugar de usar un object, necesitamos cambiar a una data class que pueda recibir un Task ID. Este Task ID puede ser nulo en caso de que estemos creando una tarea nueva. Aquí está el procedimiento:
data class TaskScreenDestination(val taskId: String? = null)
¿Cómo se modifica la navegación?
El siguiente paso crucial es modificar cómo navegamos por nuestra aplicación. Esto implica ajustar el método de navegación para que acepte argumentos opcionales, lo que le permite recibir un Task ID:
fun navigateToScreen(taskId: String? = null) {
// Lógica de navegación
}
Al hacer clic en "Agregar tarea", debes pasar un argumento nulo, mientras que al hacer clic en un elemento existente, deberás pasar el Task ID correspondiente.
¿Cómo se pre-cargan los datos en el modelo Task?
Una vez que la navegación está configurada para enviar el ID de la tarea, el siguiente paso es precargar los datos para la edición. En el ViewModel, usamos el handle de estado guardado para recuperar los datos necesarios:
val savedTaskId = savedStateHandle.get("taskId")
¿Cómo se actualiza o crea una tarea?
Prepárate para el desafío de distinguir entre la creación y la actualización de tareas. Aquí te mostramos cómo lograrlo usando la variable editTask que creamos:
editTask?.let {
fakeLocalDataSource.updateTask(
it.copy(
title = taskTitle,
description = taskDescription,
isCompleted = taskDone
)
)
} ?: run {
// lógica para crear una nueva tarea
}
Este enfoque asegura que reutilicemos el mismo código de creación y que nuestro Lazy Column no tenga errores debido a IDs duplicados.
¿Dónde se gestiona el evento de clic en la lista de tareas?
La interacción del usuario comienza en nuestra lista de tareas, donde debemos identificar cuando se hace clic en un ítem y así cargar los datos apropiados en la pantalla de edición. Lo configuramos de la siguiente manera:
taskItem.setOnClickListener {
onAction(HomeScreenAction.OnClickTask(task.id))
}
¿Qué debemos considerar al actualizar la interfaz de usuario?
Finalmente, recuerda verificar que tanto la edición como la creación de tareas funcionen sin problemas y que cualquier cambio se refleje inmediatamente en la interfaz de usuario. Asegúrate de que las tareas completas se filtren y se muestren correctamente.
Al finalizar este proceso, habrás integrado exitosamente la funcionalidad de edición de tareas en tu aplicación, permitiéndote crear, editar y gestionar tareas de forma eficaz. Con esta base funcional en su lugar, estás listo para explorar implementaciones más avanzadas, como bases de datos e inyección de dependencias.