Plantillas de Flutter

Construyendo una aplicación de redes sociales con Flutter y Back4App

54min

Introducción

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.

Requisitos Previos

Para seguir este tutorial, necesitarás:

Paso 1 – Configuración del Proyecto Flutter

1.1. Crear un Nuevo Proyecto Flutter

Abre tu terminal y ejecuta:

Bash


Navega al directorio del proyecto:

Bash


1.2. Agregar Dependencias

Abre pubspec.yaml y agrega las siguientes dependencias:

YAML


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.

Paso 2 – Configuración de Back4App

2.1. Crear una nueva aplicación de Back4App

  1. Inicia sesión en tu panel de Back4App.
  2. Haz clic en "Crear nueva aplicación".
  3. Ingresa un nombre para tu aplicación, por ejemplo, "SocialApp", y haz clic en "Crear".

2.2. Configurar los modelos de datos

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.

2.2.1. Clase de Perfil

  1. Navegar a la "Base de datos" sección.
  2. Haga clic en "Crear una clase".
  3. 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

2.2.2. Clase de Publicación

Crea un "Post" clase con las siguientes columnas:

  • usuario: Tipo Pointer<_User>
  • contenido: Tipo String
  • imagen: Tipo File
  • creadoEn: Tipo Date

2.2.3. Clase FriendRequest

Crea un "FriendRequest" clase con las siguientes columnas:

  • deUsuario: Tipo Pointer<_User>
  • aUsuario: Tipo Pointer<_User>
  • estado: Tipo String (Valores: "pendiente", "aceptado", "rechazado")

2.2.4. Clase Message

Crea un "Message" clase con las siguientes columnas:

  • deUsuario: Tipo Pointer<_User>
  • aUsuario: Tipo Pointer<_User>
  • contenido: Tipo String
  • creadoEn: Tipo Date

2.3. Obtener Credenciales de la Aplicación

  1. Navega a Configuración de la Aplicación > Seguridad y Claves.
  2. Anota tu ID de Aplicación y Clave de Cliente.

Paso 3 – Inicializando Parse en tu aplicación Flutter

Abre lib/main.dart y modifícalo de la siguiente manera:

Dart

  • Reemplaza 'YOUR_APPLICATION_ID' y 'YOUR_CLIENT_KEY' con tus credenciales de Back4App.
  • Estamos usando ChangeNotifierProvider para gestionar el estado de autenticación.

Paso 4 – Implementando la Autenticación de Usuarios

4.1. Crear el Servicio de Autenticación

Crea un nuevo directorio llamado services bajo lib y añade un archivo llamado auth_service.dart:

Dart


4.2. Crear las Pantallas de Inicio de Sesión y Registro

Crea un directorio llamado screens bajo lib y añade login_screen.dart y signup_screen.dart.

4.2.1. Pantalla de inicio de sesión

Dart


4.2.2. Pantalla de registro

Dart


Paso 5 – Configuración de Perfiles de Usuario

5.1. Crear Servicio de Perfil

Agrega un archivo llamado profile_service.dart bajo lib/services/:

Dart


5.2. Crear Modelo de Perfil

Agrega un archivo llamado profile.dart bajo lib/models/:

Dart


5.3. Crear Pantalla de Perfil

Agrega un archivo llamado profile_screen.dart bajo lib/screens/:

Dart


Paso 6 – Implementando Fuentes de Noticias

6.1. Crear Servicio de Publicación

Agrega un archivo llamado post_service.dart en lib/services/:

Dart


6.2. Crear Modelo de Publicación

Agrega un archivo llamado post.dart en lib/models/:

Dart


6.3. Crear Pantalla de Inicio

Modificar home_screen.dart bajo lib/screens/:

Dart


Paso 7 – Agregando Conexiones de Amigos

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.

7.1. Actualizar el Modelo de Datos

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.

7.1.1. Agregar relación de amigos a la clase de usuario

  1. En Back4App, ve a la User clase.
  2. Haz clic en el "+" botón para agregar una nueva columna.
  3. Nombra la columna "friends" y establece el tipo en Relation <_User>.

7.2. Crear servicio de solicitud de amistad

Crea un archivo llamado friend_service.dart en lib/services/:

Dart


7.3. Actualizar la interfaz de usuario

7.3.1. Agregar pantalla de búsqueda de usuarios

Crea un archivo llamado search_users_screen.dart en lib/screens/:

Dart


7.3.2. Agregar Pantalla de Solicitudes de Amistad

Crea un archivo llamado friend_requests_screen.dart bajo lib/screens/:

Dart


7.3.3. Actualizar Navegación de la Pantalla de Inicio

En home_screen.dart, agrega navegación a las pantallas de búsqueda de usuarios y solicitudes de amistad:

Dart


7.4. Actualizar el Feed de Noticias para Mostrar las Publicaciones de Amigos

Modifica el getPosts método en post_service.dart para obtener publicaciones del usuario y sus amigos.

Dart


Paso 8 – Implementación de Mensajería

En este paso, agregaremos mensajería en tiempo real entre los usuarios utilizando Consultas en Vivo.

8.1. Habilitar Consultas en Vivo en Back4App

  1. En el panel de control de tu aplicación Back4App, ve a Configuración de la Aplicación > Configuración del Servidor.
  2. Bajo URL del Servidor, anota tu URL del servidor (por ejemplo, https://YOUR_APP_NAME.back4app.io).
  3. Las Consultas en Vivo están habilitadas por defecto en Back4App.

8.2. Configurar Consultas en Vivo en Flutter

El parse_server_sdk_flutter paquete incluye soporte para Consultas en Vivo.

8.3. Crear Servicio de Mensajería

Crea un archivo llamado message_service.dart bajo lib/services/:

Dart


8.4. Crear Modelo de Mensaje

Agrega un archivo llamado message.dart bajo lib/models/:

Dart


8.5. Crear Pantalla de Chat

Agrega un archivo llamado chat_screen.dart bajo lib/screens/:

Dart


8.6. Actualizar UI para Iniciar Chat

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:

Dart


Paso 9 – Añadiendo Notificaciones Push

Implementar notificaciones push implica configurar Firebase Cloud Messaging (FCM) e integrarlo con Back4App.

9.1. Configurar Firebase Cloud Messaging

9.1.1. Configurar el Proyecto de Firebase

  1. Ve a Firebase Console y crea un nuevo proyecto.
  2. 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.

9.1.2. Descargar Archivos de Configuración

  • 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.

9.2. Agregar firebase_messaging Paquete

Asegúrate de haber agregado firebase_messaging a tu pubspec.yaml:

YAML


Ejecuta flutter pub get para instalar.

9.3. Inicializar Firebase en Flutter

Modificar main.dart:

Dart


9.4. Configurar Firebase Messaging

Crear un archivo llamado push_notification_service.dart bajo lib/services/:

Dart


9.5. Actualizar main.dart para inicializar las notificaciones push

En main.dart, después de inicializar Parse, inicializar el PushNotificationService:

Dart


9.6. Enviar Notificaciones Push desde Back4App

Puedes enviar notificaciones push usando Cloud Code o directamente desde tu servidor.

9.6.1. Enviando Notificación en Solicitud de Amistad

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:

Dart


Nota: Asegúrate de haber asociado la instalación con el usuario.

9.7. Asociar Instalación con 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:

Dart


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.



Conclusión

¡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.

Próximos Pasos

  • 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.

Recursos Adicionales

¡Feliz Codificación!