Firebase
Creación de una aplicación usando Firebase
Gestión de datos (6 – Bases de datos en la nube)
¿Qué es Firebase y Para qué Sirve?
Getting started with Firebase on Android
Agrega Firebase al proyecto de Android
Creación de una aplicación para almacenar tareas en Firebase
Crear el proyecto FirebaseApp (con JetPack Compose)
Uso de IA (Gemini Free y Google AI Studio)
Prompt:
crea una app en kotlin usando jetpack compose y firebase para almacenar los datos de las tareas de los usuario. Cada tarea tendrá los campos: title, description, date y completed. La app tiene que permitir realizar login y registro de usuarios (con los composables login y register), cuando el usuario haga login pasará al composable home para mostrar en una lista las tareas de ese usuario y permitir añadir, modificar y eliminar tareas.
Guía de Implementación: App de Tareas con Firebase y Jetpack Compose
Este documento resume los pasos realizados para configurar y desarrollar la aplicación de gestión de tareas.
Paso 1: Configuración del Entorno y Dependencias
- Actualización de Catálogo de Librerías (
libs.versions.toml): Se añadieron las versiones y definiciones para Firebase (Auth y Firestore), Navigation Compose y Lifecycle ViewModel Compose. - Configuración del Proyecto (
build.gradle.ktsraíz): Se incluyó el plugin de Google Services. - Configuración del Módulo (
app/build.gradle.kts): Se aplicaron los plugins necesarios y se declararon las dependencias de Firebase, Navegación y Material3. - Sincronización de Gradle: Se ejecutó un «Gradle Sync» para descargar las librerías necesarias.
Paso 2: Definición del Modelo de Datos
- Creación de la clase
Task: Se definió un modelo de datos en Kotlin para representar una tarea. Los campos incluidos son:id: Identificador único del documento en Firestore.title: Título de la tarea.description: Descripción detallada.date: Fecha límite o de creación.completed: Estado de la tarea (booleano).userId: Referencia al ID del usuario que creó la tarea para garantizar la privacidad de los datos.
Paso 3: Implementación de la Lógica de Negocio (ViewModels)
AuthViewModel:- Implementación de funciones para el registro de nuevos usuarios (
createUserWithEmailAndPassword). - Funciones para el inicio de sesión (
signInWithEmailAndPassword). - Gestión del estado de la sesión actual mediante un
MutableState.
- Implementación de funciones para el registro de nuevos usuarios (
TaskViewModel:- Conexión con Cloud Firestore.
- Implementación de un
SnapshotListenerpara obtener actualizaciones en tiempo real de las tareas del usuario logueado. - Funciones CRUD: añadir, actualizar (marcar como completada/editar texto) y eliminar documentos de la colección «tasks».
Paso 4: Desarrollo de la Interfaz de Usuario (Screens)
LoginScreen: Interfaz con campos de texto para email y contraseña, y navegación hacia el registro.RegisterScreen: Interfaz similar al login para la creación de nuevas cuentas.HomeScreen:- Uso de
Scaffoldcon unaTopAppBarpara el cierre de sesión. LazyColumnpara listar las tareas de forma eficiente.FloatingActionButtonpara abrir un diálogo de creación.- Diálogos dinámicos (
AlertDialog) compartidos para las acciones de añadir y editar tareas.
- Uso de
- Control de Navegación: Uso de
rememberNavControlleryNavHosten laMainActivity. - Rutas de Navegación: Definición de los destinos «login», «register» y «home».
- Lógica de Inicio: La aplicación verifica si existe un usuario autenticado al arrancar para decidir si muestra la pantalla de inicio o la de login.
- Gestión de Pilas de Pantallas: Configuración de
popUpTopara evitar que el usuario regrese al login/registro una vez autenticado.
Nota: Para que el proyecto funcione, es imprescindible descargar el archivo google-services.json de la consola de Firebase y ubicarlo en la carpeta /app.
Correción con Google AI Studio
I’ve fixed the issue where tasks weren’t appearing on the screen. The problem was that the task list listener was being initialized before the user had logged in, causing it to fail and never start.
Changes made:
1. Updated TaskViewModel.kt:
◦ Removed the automatic call to getTasks() from init.
◦ Added a check in getTasks() to prevent creating multiple active listeners.
◦ Added a clearTasks() method to remove the listener and clear the list when the user logs out.
◦ Implemented onCleared() to clean up the listener when the ViewModel is destroyed.
2. Updated HomeScreen.kt:
◦ Added a LaunchedEffect(Unit) to trigger getTasks() as soon as the Home screen is displayed (ensuring the user is already authenticated).
◦ Updated the logout button to call taskViewModel.clearTasks() before logging out, ensuring a clean state for the next session.
These changes ensure that the app correctly listens for database updates in real-time as soon as the user enters the main screen.
Añadir el fichero google-services.json a la carpeta raíz del proyecto
Código del repositorio en GitHub
Más información:







Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.