Construyendo una aplicación de redes sociales con Flutter y Back4App
Crear una aplicación de redes sociales puede ser una tarea compleja, pero con Flutter y Back4App, puedes agilizar el proceso de desarrollo. Este tutorial te guiará a través de la construcción de una aplicación de redes sociales completa que incluye autenticación de usuarios, gestión de perfiles, feeds de noticias, conexiones de amigos, mensajería y notificaciones.
Al final de este tutorial, tendrás una aplicación de redes sociales funcional con las siguientes características:
- Autenticación de Usuarios: Procesos de registro e inicio de sesión seguros.
- Perfiles de Usuarios: Perfiles editables con información del usuario.
- Feeds de Noticias: Mostrar publicaciones de amigos y del usuario.
- Conexiones de Amigos: Capacidad para enviar y aceptar solicitudes de amistad.
- Mensajería: Chat en tiempo real entre usuarios.
- Notificaciones: Notificaciones push para solicitudes de amistad, mensajes e interacciones en publicaciones.
Para seguir este tutorial, necesitarás:
- Flutter SDK instalado en tu máquina. Sigue la guía oficial de instalación de Flutter para tu sistema operativo.
- Conocimientos básicos de Flutter y Dart. Si eres nuevo en Flutter, revisa la documentación de Flutter para familiarizarte con los conceptos básicos.
- Un IDE o editor de texto como Visual Studio Code o Android Studio.
- Parse Server SDK para Flutter agregado a tu proyecto. Aprende cómo configurarlo siguiendo la Guía del SDK de Flutter de Back4App.
Abre tu terminal y ejecuta:
Navega al directorio del proyecto:
Abre pubspec.yaml y agrega las siguientes dependencias:
Ejecuta flutter pub get para instalar los paquetes.
Nota: Estamos usando:
- parse_server_sdk_flutter para la integración con Back4App.
- provider para la gestión del estado.
- image_picker para seleccionar imágenes de perfil y publicaciones.
- cached_network_image para una carga eficiente de imágenes.
- firebase_messaging para notificaciones push.
- uuid para generar IDs únicos.
- Haz clic en "Crear nueva aplicación".
- Ingresa un nombre para tu aplicación, por ejemplo, "SocialApp", y haz clic en "Crear".
Necesitaremos crear varias clases en Back4App:
- Usuario: Clase incorporada para la autenticación de usuarios.
- Perfil: Almacena información del perfil del usuario.
- Publicación: Almacena publicaciones de usuarios.
- SolicitudDeAmistad: Gestiona solicitudes de amistad entre usuarios.
- Mensaje: Almacena mensajes entre usuarios.
- Navegar a la "Base de datos" sección.
- Haga clic en "Crear una clase".
- En el modal:
- Seleccione "Personalizado".
- Ingrese "Perfil" como el nombre de la clase.
- Haga clic en "Crear clase".
Agregue las siguientes columnas:
- usuario: Escriba Pointer<_User>
- nombreDeUsuario: Escriba String
- nombreCompleto: Escriba String
- biografía: Escriba String
- fotoDePerfil: Escriba File
Crea un "Post" clase con las siguientes columnas:
- usuario: Tipo Pointer<_User>
- contenido: Tipo String
- imagen: Tipo File
- creadoEn: Tipo Date
Crea un "FriendRequest" clase con las siguientes columnas:
- deUsuario: Tipo Pointer<_User>
- aUsuario: Tipo Pointer<_User>
- estado: Tipo String (Valores: "pendiente", "aceptado", "rechazado")
Crea un "Message" clase con las siguientes columnas:
- deUsuario: Tipo Pointer<_User>
- aUsuario: Tipo Pointer<_User>
- contenido: Tipo String
- creadoEn: Tipo Date
- Navega a Configuración de la Aplicación > Seguridad y Claves.
- Anota tu ID de Aplicación y Clave de Cliente.
Abre lib/main.dart y modifícalo de la siguiente manera:
- Reemplaza 'YOUR_APPLICATION_ID' y 'YOUR_CLIENT_KEY' con tus credenciales de Back4App.
- Estamos usando ChangeNotifierProvider para gestionar el estado de autenticación.
Crea un nuevo directorio llamado services bajo lib y añade un archivo llamado auth_service.dart:
Crea un directorio llamado screens bajo lib y añade login_screen.dart y signup_screen.dart.
Agrega un archivo llamado profile_service.dart bajo lib/services/:
Agrega un archivo llamado profile.dart bajo lib/models/:
Agrega un archivo llamado profile_screen.dart bajo lib/screens/:
Agrega un archivo llamado post_service.dart en lib/services/:
Agrega un archivo llamado post.dart en lib/models/:
Modificar home_screen.dart bajo lib/screens/:
En este paso, implementaremos conexiones de amigos entre usuarios. Los usuarios pueden enviar solicitudes de amistad, aceptarlas o rechazarlas, y ver su lista de amigos. Modificaremos los modelos de datos, crearemos servicios y actualizaremos la interfaz de usuario para soportar esta funcionalidad.
Ya hemos creado la FriendRequest clase en Back4App con las siguientes columnas:
- fromUser: Puntero a _User
- toUser: Puntero a _User
- status: Cadena (Valores: "pendiente", "aceptado", "rechazado")
Además, necesitamos rastrear la lista de amigos de un usuario. Podemos hacer esto agregando una friends relación en la _User clase.
- En Back4App, ve a la User clase.
- Haz clic en el "+" botón para agregar una nueva columna.
- Nombra la columna "friends" y establece el tipo en Relation <_User>.
Crea un archivo llamado friend_service.dart en lib/services/:
Crea un archivo llamado search_users_screen.dart en lib/screens/:
Crea un archivo llamado friend_requests_screen.dart bajo lib/screens/:
En home_screen.dart, agrega navegación a las pantallas de búsqueda de usuarios y solicitudes de amistad:
Modifica el getPosts método en post_service.dart para obtener publicaciones del usuario y sus amigos.
En este paso, agregaremos mensajería en tiempo real entre los usuarios utilizando Consultas en Vivo.
- En el panel de control de tu aplicación Back4App, ve a Configuración de la Aplicación > Configuración del Servidor.
- Bajo URL del Servidor, anota tu URL del servidor (por ejemplo, https://YOUR_APP_NAME.back4app.io).
- Las Consultas en Vivo están habilitadas por defecto en Back4App.
El parse_server_sdk_flutter paquete incluye soporte para Consultas en Vivo.
Crea un archivo llamado message_service.dart bajo lib/services/:
Agrega un archivo llamado message.dart bajo lib/models/:
Agrega un archivo llamado chat_screen.dart bajo lib/screens/:
Puedes iniciar el chat desde la lista de amigos o la pantalla de búsqueda de usuarios.
En la lista de amigos, al mostrar amigos, añade un botón para iniciar un chat:
Implementar notificaciones push implica configurar Firebase Cloud Messaging (FCM) e integrarlo con Back4App.
- Agrega una aplicación de Android y/o iOS a tu proyecto.
- Para Android, necesitas el nombre del paquete (applicationId).
- Para iOS, necesitas el Identificador del Paquete.
- Para Android: Descarga google-services.json y colócalo en android/app/.
- Para iOS: Descarga GoogleService-Info.plist y agrégalo a tu proyecto de Xcode bajo Runner.
Asegúrate de haber agregado firebase_messaging a tu pubspec.yaml:
Ejecuta flutter pub get para instalar.
Modificar main.dart:
Crear un archivo llamado push_notification_service.dart bajo lib/services/:
En main.dart, después de inicializar Parse, inicializar el PushNotificationService:
Puedes enviar notificaciones push usando Cloud Code o directamente desde tu servidor.
Cuando un usuario envía una solicitud de amistad, puedes enviar una notificación push al destinatario.
En friend_service.dart, modifica el sendFriendRequest método:
Nota: Asegúrate de haber asociado la instalación con el usuario.
Cuando un usuario inicie sesión, asocia su instalación con su cuenta de usuario.
En auth_service.dart, después de un inicio de sesión exitoso:
Nota: Las notificaciones push requieren una configuración adicional tanto en el lado del cliente como en el del servidor. Necesitas manejar diferentes escenarios, como notificaciones en segundo plano y permisos de usuario, que están más allá del alcance de este tutorial.
¡Felicidades! Has construido la base de una aplicación de redes sociales utilizando Flutter y Back4App. Esta aplicación incluye autenticación de usuarios, gestión de perfiles y una función de feed de noticias. Si bien la implementación de conexiones completas de amigos, mensajería y notificaciones está más allá del alcance de este tutorial, ahora tienes la estructura necesaria para seguir expandiendo tu aplicación.
- Conexiones de Amigos: Implementar funcionalidades de solicitudes de amistad.
- Mensajería: Agregar funciones de chat en tiempo real utilizando Live Queries.
- Notificaciones: Integrar notificaciones push para el compromiso del usuario.
- Mejoras de UI: Mejorar la interfaz de usuario y la experiencia del usuario.
- Seguridad: Asegurar la seguridad y privacidad de los datos estableciendo ACLs apropiados en Back4App.
¡Feliz Codificación!