Crear una aplicación de chat básica con Flutter y Firebase | Android & IOS | Rahul Agarwal | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Crear una aplicación de chat básica con Flutter y Firebase | Android & IOS

teacher avatar Rahul Agarwal, Flutter Developer & Trainer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción

      0:49

    • 2.

      Crea un nuevo proyecto

      14:01

    • 3.

      Construir la pantalla de arte

      10:24

    • 4.

      Implementar sesión de Google

      14:30

    • 5.

      Consultar el estado de autenticación

      14:03

    • 6.

      Búsqueda de la UI del usuario

      7:00

    • 7.

      Implementar la funcionalidad de búsqueda

      12:51

    • 8.

      Construir pantalla de chat

      17:40

    • 9.

      Almacenar mensajes en Firebase

      13:17

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

227

Estudiantes

--

Proyecto

Acerca de esta clase

Sin dudas de chat se han convertido en un tema caliente de la ciudad y se toma el mundo en la lluvia en los en los últimos años. Con 2 millones de usuarios que acceden al mensajero de WhatsApp en una base mensual y se proyecos a generar los ingresos de 4.8 millones de usuarios en 2020, es seguro decir que las aplicaciones de chat no se van en el futuro en el futuro. Los usuarios activos de las principales 3 aplicaciones de chat que se hacen en WhatsApp, Facebook Messenger y WeChat tienen alrededor de 4 millones de usuarios activos mensuales.

Ahora la pregunta importante es “¿cómo puedes desarrollar una aplicación de chat altamente develop y las tecnologías que puedes utilizar para crear esta aplicación?”.

La respuesta sencilla es utilizar Flutter con Flutter con Firebase.

Desarrollo de aplicaciones Flutter ha tomado el mundo en el desarrollo de aplicaciones móviles cross-platform Puedes utilizarlo para crear UI con píxeles perfectos y muchas empresas de desarrollo utilizan Flutter hoy.

Aprenderás a construir una versión muy básica de la aplicación de chat para asegurarte de que sabemos cómo implementar los conceptos de Flutter y Firebase en las aplicaciones del mundo real.

Pasos para desarrollar la aplicación de chat en flutter

  • Autorización con Firebase

  • Firebase Firestore en Firebase: sube y Retrieve de datos en el Firestore en la nube

  • Crear la disposición de la pantalla de la aplicación de Chat

  • Enlazo final de la aplicación de Chat Flutter con Firebase

  • Implementar la funcionalidad de búsqueda

  • El cacheado de imágenes para mejorar la experiencia de los usuarios

Conoce a tu profesor(a)

Teacher Profile Image

Rahul Agarwal

Flutter Developer & Trainer

Profesor(a)

Hello, I'm Rahul. I am skilled in building cross platform application using Flutter. I am freelance developer as well as conduct workshops to share my knowledge with the community.

Ver perfil completo

Level: Intermediate

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción: Si conoces los conceptos básicos de Alda de Flutter y Firebase, ya sea que almorzes por tu cuenta. Por lo que después de eso, el siguiente paso será solicitar tu primera entrevista laboral. Y tienes tu currículum listo ahí que un reclutador te pedirá que les muestres algunos proyectos prácticos como rojos, pues en base a deuda solo ellos juzgarán tu conjunto de habilidades. lo que en este curso, aprenderás a construir una aplicación básica de chat con Flutter y Firebase como ese back-end. Este curso es para principiantes que son nuevos en los proyectos de aplicación del mundo real. Personas que saben que lo básico un aleteo, pero quieren construir algo desde cero para practicar lo que hayan aprendido hasta ahora. Espero que disfrutes de este curso y consigas tu trabajo de ensueño en tu compañía de ensueño. 2. Crea un nuevo proyecto: Hola, bienvenido a este curso donde construiremos una aplicación básica de chat usando Flutter y Firebase. Algunos antes de seguir adelante, estoy asumiendo que tienen conceptos básicos anteriores despejados, como oscuro, más plano y cómo implementar la autenticación Firebase y usar la base de datos Firestore también. Porque en este módulo, sólo hablaremos esos conceptos intermedios porque construiremos una aplicación de chat completa. Y para eso, debes tener tus conceptos básicos de lectura. Algunos sin perder más tiempo. Me gustaría empezar por crear un nuevo proyecto. Entonces vamos a la carpeta. Y aquí usaría la línea de comando y acaba de morir Flutter. Crear aplicación de chat como esta. Por lo que esto creará nuestro nuevo proyecto de halagador. Entonces sí, esta es nuestra aplicación de chat. Ahora solo trae tu Código VS y anexa tu proyecto aquí. Está bien, ya está hecho. Por lo que sólo tienes que eliminar este archivo de prueba. Ahora, no sólo habré aprendido en mi emulador en este momento, primero crearé mi proyecto Firebase. Así que ve a firebase dot google.com y haz clic en ir a consola. Entonces aquí simplemente haga clic en Agregar proyecto y le dio un nombre. Voy a nombrarlo inundado aplicación de chat. Está bien. Y luego continuar. No habilitaré Google Analytics por ahora. Y luego haga clic en el botón Crear nuevo proyecto. Y entonces sólo tomará unos segundos. Ver mi nuevo proyecto está listo. Después da click en Continuar. Entonces. Aquí nos navegamos a este panel de Firebase. Aquí puedes ver las otras opciones como qué indicación almacenamiento de base de datos hospedando un búho. Y muy medio puedes ver empezar agregando Firebase a tu aplicación. Por lo que tenemos que configurar Firebase con nuestra aplicación flutter. Y configuraré una versión para Android. Por lo que solo tienes que hacer click en el Android. Aquí. Verás las otras opciones que son habilidades tecnológicas. Primero es el nombre del paquete de Android que puedes encontrar. Al ir a la carpeta Android, luego a la app, luego a la fuente. O también puedes ir a dentro del ID de Android es este edificio. Y aquí puedes ir a ver esta configuración predeterminada y tu ID de aplicación. Esta diapositiva, esta aquí. Puedes nombrarlo cualquier cosa. Yo lo nombraría app chat. Entonces, ya que estaremos usando la autenticación de inicio de sesión de Google. Por lo que tenemos que usar nuestro certificado de firma de depuración para ello. Para obtener tu certificado de firma de depuración, tienes que obtener la clave SHA-1 de tu dispositivo. Para eso simplemente anexar nuevo directorio, eso es directorio del sistema. Ir a carpeta C. Muy raro. Y escribir archivos identidades que hicimos dentro de archivos de programa, hay que ir a Android, luego Android Studio y JRE, Dann bin. Y aquí. Tienes que sacar su línea de mando. Ahora. Solo tienes que pegar esta línea de código aquí. Si lo deseas, solo puedes pausar el video y obtener la tecla SHA-1. Después de escribirlo y pulsar Intro. Obtendrás tu llave SHA-1 a partir de aquí. Basta con copiarlo. Y luego, y luego pegarlo en esta sección de certificados de firma de depuración. Y luego dar click en Registrarse. Otra vez. Esta clave se utiliza para ir bien, indicación de fonones de inicio de sesión para este tipo de propósitos. Ahora, tendrás que descargar ese archivo config. Esto es importante ya que contiene las claves APA y la información crítica para que Firebase use. Basta con descargarlo y luego ir a esa carpeta pesos que se están descargando. Cortarlo desde ahí. Ahora en tu proyecto aleteo carpeta android CO2, luego dentro de la carpeta de la aplicación, y aquí pega tu cornudo services.js y archivando. A continuación, simplemente haga clic en Siguiente. Ahora tenemos que hacer algunas configuraciones Firebase en nuestro Proyecto Florida. Copia esta clase parte línea de código. Y en tu carpeta android, tenemos un archivo Gradle acumulada dentro de él que justo esto aquí. Después dentro de la carpeta Android, y luego dentro de la carpeta de aplicaciones tenemos otro archivo donde tenemos que pagar esta línea de código. Vayamos aquí. Puedes ver aquí, pegarlo aquí, y luego copiar esto, aplicar plugin y pegarlo al final. Además, una cosa que tienes que hacer es justo aquí, multi ydx dy, dx habilitado a este código se requiere cuando estamos tratando con Firebase. Entonces esto hay que recordar, siempre. Después simplemente haga clic en Siguiente, y luego hacemos clic en Continuar a la consola. Estamos navegados a la consola Firebase. Y aquí nuestra aplicación para Android está lista para funcionar. Ahora, antes de ejecutar nuestra aplicación en el emulador, tenemos que hacer algunas configuraciones aquí. Por lo que sólo hay que poner dos puntos principales, archivo de puntos y aquí hacer la función principal como fregadero. Y luego a la derecha, dendrite esta línea de código. En primer lugar, el enlace rígido de datos y el corto inicializado. Por lo que hay que escribir esta línea de código. Se está tomando algo de tiempo para su enlace que aseguran inicializar esto y luego simplemente iterar punto firebase. Tenemos que importar primero Firebase también. Pero como puedes ver, antes de importar Firebase, tenemos que escribir que dependencias spec dot archivo YAML. Entonces para eso, el costo para acceder a cualquier paquete externo, nuestra característica, tenemos que usar dependencias. Por lo que primero se llamó, segundo fue Firebase. Y luego como realmente usamos el inicio de sesión de Google vía, usaremos esa pierna en Israel. Y lo último es la nube Firestore. Por lo que estos son los paquetes requeridos. Solo tienes que copiar este paquete, ir al archivo y pegarlo aquí. Entonces de manera similar copie, pegue, luego inicie sesión en Google, copie y pegue. Y luego finalmente, nuestra Cloud Firestore. Estas dependencias requeridas. Y todos estos plugins de fibras se llaman colectivamente fuego Flutter. Simplemente puedes buscar este término y encontrarás todas estas dependencias. Ahora ve al archivo de punto principal. Y escribamos, inicialicemos nuestra Firebase. Y aquí tenemos comercio esperando. Firebase dot inicializar que en que las configuraciones se hacen correctamente. Ahora, si quieres, podemos simplemente, solo podemos ejecutar la aplicación en el emulador y también asegurarnos de que la indicación habilite el inicio de sesión de Google. Por lo que configura el inicio de sesión de Google. Y aquí en ese tercero, tienes esto deshabilitado, solo habilítalo. Y yo ahorraría. Ahora se está habilitando el inicio de sesión de Google . De igual manera, hay que habilitarlo vía Google, Firestore también. Entonces aquí, basta con dar click en Crear Base de Datos y luego elegir, elegir una ubicación y lo haces en ese testimonio y alfabeto, te enviará a esta nube Firestore consola Israel. Entonces eso es todo para este video. Asegúrate de empezar a depurar porque ya que va a tardar algún tiempo, me gustaría detener el video aquí para que no nos pierda el tiempo y podamos continuar en el siguiente video. Gracias. 3. Construir la pantalla de arte: Hola. En esta sesión, vamos a acumular pantalla de autenticación. Porque antes de entrar a las casas limpias son la pantalla de chat definitivamente el usuario tiene que crear una cuenta. Por el momento que Vamos a crear una carpeta dentro de nuestro plumín y nombrelo pantallas. Y dentro de eso, crea el archivo llamado ARP, bazo dot-dot-dot, así. Por lo que como usualmente tablero Material. Y luego vamos a crear un estado para el inicio de sesión y andamio de inicio de sesión y nomenclatura. Desde entonces Vardy, tendría saqueos. Y luego dentro de ese niño, Vamos a tener una columna. Entonces lo que simplemente estoy planeando hacer es crear que este primer dedo sea un logotipo. Eso después habrá el nombre de la aplicación y luego un botón llamado firmar con Google. Dicho eso, así que por eso los estoy usando. Usando esta columna dentro del coelom. Tomemos un contenedor. Las redes de contenedores tienen una decoración de caja. Dentro de ella. Me gustaría ver la imagen de colisión de imagen. Y ahora dentro de esto, la imagen de colisión cuando se le da widget de imagen de red. Por lo que simplemente puedes abrir tu navegador. Se puede chatear, chatear logotipo, suponer icono de chat, así. Se puede simplemente, y luego habrá muchas opciones. Puedes elegir lo que quieras. Lo que voy a estar haciendo es sólo esperar, déjame comprobar si consigo lo que quiero. Por lo que sólo usaré las mías, que ya he usado antes. Simplemente puedes hacer clic con el botón derecho y hacer clic en Copiar vestido inmediato, y luego pegarlo aquí. Haz esto simple así. Entonces es la pantalla de arte. Vayamos a la principal.Jack. Pasamos por ese código anterior. En el hogar. Hacer la pantalla impar es la pantalla inicial así. Y luego vamos a ver. ¿ Está mostrando imágenes o algún error? ¿ Está ahí? Es comprobarlo. Supongo. Lo que puedo hacer es suponer que si doy expandido, entonces vamos a ver qué pasa. Ver, porque obviamente debes darle algo de altura a este contenedor. Por lo que he dado medios expandidos, tome todo el espacio disponible dentro de esta columna. Entonces ese es el significado lambda. Después de este widget expandido. Y tendremos un texto e inundaremos el cobertizo. Y vamos a dar un poco de estilo. Tamaño extraño, 36, font-weight, font-weight, negrita. Guardémoslo y veamos. Desde que he usado expandido, por lo que acaba de empujar hasta el fondo e investigar sobre el espacio aquí. Después de esto, necesitamos crear un fichaje con el botón de Google. Hagámoslo. No nos hayamos aliviado. Pero luego en visceralmente predeterminado ahora en solo para la interfaz de usuario. Y dentro de ese niño, vamos a crear un papel para que puedan ser imaginados así como texto. Hagamos que el principal exista. Me refiero a ese centro y a que los niños. Lo primero que necesito es imaginado no en red, y luego obtener un logotipo de Google. Yo solo copiaría mi propia esta imagen, pero solo puedes ir a Chrome como usualmente buscar imagen y copiar su dirección y pegarla aquí así. Y a esta imagen, Vamos a darle una altura. Altura de 36. tercer lugar, esta imagen en esa fila, tendremos un tamaño de 10 para que haya algún espaciado entre su logotipo. Esa es la imagen y el texto es el texto. Y x estará firmando con glucosa. Vamos a dar un poco de estilo, estilo básico como siempre. Entonces. Tendremos un tamaño de fuente de hacer D. Y eso dicho, vamos a guardar y comprobar. Cuál es la salida. Ver, tenemos este logo y tenemos este botón. En primer lugar, nos daría algo de relleno a este botón. Vamos y luego envolverlo con Berlín y dar agregando no simétrico. Y luego horizontalmente. Entonces qué calcomanía, vívidos dos en d Vamos a ver. Agradable, al menos decente. Entonces lo que haré es a este botón. Aquí, le daré un poco de estilo a ese botón. Estilo. Pero luego estilo. Perdón, debería ser sólo Merton rancio así. Y luego dentro de ella alguna vez dado fondo color, mi estado puso el punto, luego el menos negro y luego algo de relleno. Por lo que más ropa de cama puede decir. Vamos a comprobar porque el relleno necesitaba para asegurarse de que ese botón no lo es. Pero no seamos así de angosto, así que vamos a darle algo de relleno también. Met propiedad estatal ADA en insets de borde, no simétrica. Y luego sólo la vertical. Demos 12. Vamos a revisar C. Ahora, esta pantalla de inicio, lo siento, la pantalla impar se ve perfectamente bien. Y justo de nuevo estoy expandido por esta expandida que ha tomado son menos espacio hasta aquí. Y luego los otros widgets, eso significa que el texto y el botón se presionan hacia abajo. Entonces sí, eso es todo para esta pantalla de autenticación. En el siguiente video, implementaremos la funcionalidad de inicio de sesión de Google. 4. Implementar sesión de Google: Ahora se completa la parte de la interfaz de usuario. Es hora de que trabajemos en la funcionalidad de firma de Taco Bell. Por el momento que en el archivo arts greens, simplemente voy a ir en la parte superior. Y primero, crearía una instancia de firma de Google. Por lo que será cornudo fichaje es igual para iniciar sesión así. Y luego después, crearía un asunto de instancia Firebase por una tienda que es primero en base de datos también. Porque almacenaría los datos del usuario en Firestore también. Se trata de todos los datos de autenticación. Entonces después de esto, vamos a crear nuestro futuro nombre de función es Función de firma. Será un sinc. Y este es el procedimiento que es, este código se fija para el calcinado. Esperar. Ir calcinando punto de inicio de sesión. Por lo que esto aparecerá menú. Puedes elegir tu cuenta. Podría hacer clic en el botón Atrás, y esa corriente será nula. En este caso, he hecho esta comprobación para que si el usuario hace clic en iniciar sesión con Google pero no elige ninguna cuenta y retrocede directamente, entonces no se ejecutará el siguiente código. Después de esto. Vamos a un 10 en decadencia. Google es igual a esperar, usará dot-dot-dot decayed así. Entonces déjame obtener el token de acceso que necesito para controlarlo. Y entonces así es como nuestra credencial. Y voy proveedor. Credenciales. Aquí. Acepta token de acceso y vinculará Google Art. Tan solo hazte sonreír. Irá token de acceso y luego el token de ID en el token de ID de cookie. Entonces lo que tenemos que hacer. Ahora tenemos que usar también la instancia de arte de Firebase. Por lo que simplemente escribiré credencial de usuario. El usuario puede entonces compartir es igual a esperar. Instancia de punto Firebase. Yo he creado la instancia aquí solamente, pero firmando con credencial. Y hay que pasar la credencial. Palabras tan simples, se requería este código para obtener la autenticación o las credenciales de Google. Y después de eso, usaremos esta línea de código para que nuestra propia autenticación Firebase pueda acceder a esta cuenta y almacenar la información. Ahora hemos firmado con éxito. Pero lo que quiero hacer es que quiero crear o guardar esos datos, también la base de datos Firestore. Por lo que simplemente puedes escribir una colección de bomberos de peso. Crearía una colección llamada Usuarios dot DOCX. Documento ID puede ser credenciales de usuario dot dot UID. Y está mostrando esto porque no se puede dejar a Nelson usando esta exclamación y asegurando que no será nulo. Y luego este método set. Hagámoslo. Lo primero que almacenaría es ese correo electrónico, simplemente credenciales de usuario tardío, correo electrónico de usuario. Y como siempre, tienes que usar esto. Entonces escribiría nombre, credencial de usuario. El usuario. Nombre de visualización de puntos. Entonces guardaría esa imagen. Y los canadienses inmediatos usuario credencial dot user. Para una URL. Entonces será UID. Uid será usuario credencial UID. Y la última fecha en que se creó esta cuenta? La fecha, la hora. Pero ahora tenemos nuestra función lista. Vamos a probarlo. Pero primero, asegúrate de llamar a esta función en nuestro botón de pulsación. Así que simplemente escribe en este fregadero y espera Función de firma como esta. Por lo que se ha llamado a esta función. Ahora vamos a comprobar si está funcionando o no. Tenemos lista nuestra Firebase. Ahora si hago clic en él, me podría preguntar son puede que va directamente sí, Me ha pedido. Por lo que voy a dar clic en Mi Cuenta. Y obviamente en este momento, no estamos siendo navegados por ninguna parte. Pero vamos a comprobar si se ha guardado o no. Mira, esto se ha salvado. Y en mi base de datos Firestore. Aquí también, los datos se han guardado adecuadamente. El nombre de imagen de correo electrónico UID, y ahora todo está funcionando bien. Sólo una cosa, una cosa tengo que asegurarme de que supongamos que el usuario se desconecte y luego él, si vuelve a hacer clic en firmar con Google, entonces estos datos serán hacia actualizados de nuevo en que se dispara a la base de datos, lo que simplemente significa, supongamos mientras utiliza la aplicación de chat, el usuario cambia la imagen. En esto, en nuestra aplicación de inundación, que es la imagen. Pero si se apaga y hace clic en iniciar sesión con Google de nuevo, entonces de nuevo, esta imagen se cambiará a la imagen predeterminada de que cuenta de Google será porque no hemos hecho ningún cheque. Entonces lo primero que lo haría comprobar que los documentos snapshot será datatype y escribir usuario existen, lo que implementa si existe usuario en la base de datos. Habría conseguido usuarios de cobranza. Pero doc y documento ID serán credencial de usuario dot user dot, UID dot get así. Y este UID debe asegurarse de que no sea nulo. Ahora, esto irá a este archivo almacenado aquí, comprueba si el usuario ya se ha registrado o no previamente. Entonces después de eso, simplemente podemos hacer un if, chequear. Si el usuario existe, el punto existe. Si el usuario existe, entonces simplemente podemos imprimir para nuestra depuración ese usuario ya existe en la base. Pero si no esa cosa la primera vez para este usuario, entonces podemos crear una nueva entrada en nuestro Firestore. Por lo que esta cosa fue muy importante. Ahora supongamos que si hago clic en el inicio de sesión con Google, nuevo, ver usuario ya existe en la base de datos. Por lo que al menos los datos anteriores no se están actualizando. Nuestro empujó con fuerza al mismo documento ID. Ahora, tenemos nuestro inicio de sesión de Google funcionando perfectamente. Pero después de que el usuario inicie sesión, tenemos que asegurarnos de que navegamos a la pantalla de inicio y además no podemos comer luego de volver a nuestra pantalla hasta que cerremos la sesión manualmente. Por lo que tenemos que comprobar el extraño estado de Firebase. Pero antes de entonces. Vamos a crear un archivo dentro de las pantallas directorio y nombrarlo pantalla de inicio. Punto, punto. Al igual que esto. Sí, vamos a importar nuestro paquete material. Vamos a obtener este estado de inicio de sesión gratis. Denle pantalla de inicio. Y eliminaremos el constructor predeterminado. Entonces tenemos este otoño. Ahora en ese bar AB. Simplemente hagamos eso de texto. Entonces centrar eso a través. Entonces el color de fondo debe elegir los colores de inicio. ¿ De acuerdo? Y aquí tendría un botón que es para el botón de cierre de sesión. Y sólo dale suficiente. I dot k Y después de la barra AB, daría un botón de acción flotante. En nuestra pantalla de inicio. Botón de acción flotante. Entonces en ese niño, escribiría, puedo, puedo empezar a buscar. Entonces por qué he hecho esto, voy a explicar. Simplemente vamos a crear primero el CUI. Ahora tenemos esta UI. Vayamos al punto principal. Y solo para probar, veamos cómo se ve esta interfaz de usuario. Ahora reinicio. Y vamos a revisar. Ver, Esta es la pantalla de inicio de nuestra aplicación de mensajes. Por lo que tengo este árbol de búsqueda, botón de búsqueda para que el usuario pueda buscar sus amigos en esta aplicación y enviarles mensajes desde ahí directamente. Ese es el único propósito, El propósito de este botón. Y en el cuerpo vamos a tener en esos chats con los que el usuario ha estado hablando. Pero lo es, estará en el video posterior porque ahora mismo, al menos tiene que iniciar primero una conversación con alguien. Entonces eso es todo. Yo volvería a convertirla en la pantalla impar. Ahora, solo imagínate que registré la aplicación, pero realmente ya me he registrado, pero no estamos navegando a la pantalla de inicio porque no estamos comprobando el estado de autenticación de la Firebase. Entonces en el siguiente video, lo haremos exactamente. Eso es todo por esta sesión. Gracias. 5. Consultar el estado de autenticación: Hola. Ahora para comprobar las autenticaciones, Estado v tiene que usar ese método de usuario actual proporcionado por Firebase. Y en consecuencia, mostraremos esa pantalla si el usuario ha iniciado sesión o no. Y vamos al archivo main.js aquí. En primer lugar, crearía la función futura, que nos dará una virgen. Yo usaría firmado. No obstante, comprobaré que el usuario ya ha iniciado sesión. Lo que podemos hacer es llamando a firebase dot instance dot CurrentUser, simple como eso. Entonces comprobaría si el usuario no es igual a null. Después regresa la pantalla de inicio. Si es nulo, es decir, EA no está firmado en este momento. Entonces hecho pantalla de arte, digamos. Por lo que esta es la función requerida. Ahora vamos a implementar en la propiedad de casa de nuestro widget. Simplemente utiliza el futuro Winder. Y aquí, el futuro será el usuario registrado. Y ese constructor usualmente nos dará contexto. Y viendo instantánea. En esto, nos devolverá un widget, como sabes por la función. Ahora, simplemente comprobaremos si la instantánea tiene datos. Devolver datos de instantáneas. Eso simplemente significa que tienden a haber visitado. Y tenemos que asegurarnos de dar estas exclamaciones para que no sea ninguna. Y estamos liderando señaló uno que hicimos será por lo menos son o son hogar-escolaridad o pantalla de dudas. Por lo que no puede ser nulo. Y si es así, si no lo es, entonces sólo mostraré un indicador circular de progreso. Y luego HF y Janice ejecutando. Ahora vamos a guardar eso y comprobar si estoy navegado directamente a la pantalla de inicio. Ver, ahora, si reinicio mi app, me navegarán la pantalla de inicio hasta y a menos que haga clic en esto, eso significa botón lava, que no está funcionando en este momento, pero debemos dar click en ella y luego solo deberíamos volver a la pantalla de inicio de sesión. Ahora, como tenemos esos datos de usuario provenientes de los incendios, ese es este dato, obviamente estaremos usando y compartiendo estos datos a través de la aplicación. Y será en formato JSON. Es por 10. Creamos nuestra propia clase de modelo para esos datos. Entonces vamos a crear una nueva carpeta dentro de lib y nombrelo modelo de usuario dot, dot. Después estudia. Debe nombrarse modelos. Y dentro de ella, deberíamos obtener un archivo llamado User model dot. Empecemos a crear nuestra clase modelo. Yo lo nombraría, usaría un modelo. Ahora. Tendrá en ahora valores de esta clase, eso es este dato. Entonces empecemos con string. Nombre de cadena, cadena, imagen, marca de tiempo, que es de Firebase. Podemos salir. Entonces cadena UUID. Vamos a crear un constructor que se requiera. Esto requería this.name requerido, esta imagen requirió esto. Y entonces de manera similar este punto UID. Por lo que tenemos nuestro modelo listo, pero como también sabes que consigue que nuestras funciones serialicen y desserialicen nuestros datos JSON. Y por lo general este punto de llamada de JSON. Y todo este concepto es el concepto básico de más adelante los modelos. Entonces espero que sepas que este concepto de Berlín solo dirá UserModel dot de JSON Estoy nombrando. Se aceptará documentos snapshot. Instantáneas. Entonces, ¿qué es esta copia de envío de documentos. Este dato está llamando a instantánea de documento. Ahora simplemente giraría un modelo de usuario. Ahora, vamos a empezar con el medio será imagen instantánea. Entonces vamos a copiarlo. Set realmente puede ser nombre. Y luego nombre. Obviamente se puede. Yo no hice ningún pedido. Simplemente me gusta tener este pedido. De la misma manera. Se ve bien. La fecha y luego UID será ID. Entonces estas no son más que estas claves en la imagen y todas estas claves. Ahora vamos a asegurarnos de que enviamos esta clase UserModel mientras navegamos a la pantalla de inicio para que estos datos se puedan utilizar hacia la aplicación. Pero primero, vamos a convertir usuario de Firebase a nuestro modelo de Usuario, punto principal Hutu. Entonces aquí tenemos este inicio de sesión de usuario y ese tipo de datos de usuario que viene de la Firebase. Entonces dentro de esa declaración if, simplemente escribiré documentos snapshot. Usando datos. Para Firebase, usuarios de la colección de puntos de la instancia Firestore. Entonces simplemente con ese documento ID de uci.edu AD, obtendré esos datos de los incendios, eso es este dato. Antes teníamos estos datos, que son los datos del usuario. A partir de eso, estoy buscando el Firestone y luego simplemente convertirlo a nuestro propio modelo de vidrio. Y usa modelos usando model.fit algunos JSON y envía esos datos de usuario, que es una instantánea de documento. Y dentro de esta pantalla de inicio, me gustaría enviarlo al navegar. Entonces en, dentro de la pantalla de inicio, deberíamos asegurarnos de que lo estamos aceptando como módulo de usuario. Entonces usuario, y sólo lo nombramos simplemente usuario. Y luego a través de ese constructor, lo estoy aceptando. Por lo que se hará el error. Ahora, cuando iniciamos sesión con Google, hemos estado navegando a la pantalla de inicio. Y para eso, usaría eso mi promedio y es que no lo enviaré directamente a la pantalla de inicio. Simplemente lo enviaría a mi app para que vuelva a comprobar y recuperar datos del archivo Almacenar y luego crear un modelo o de lo contrario tenemos que hacerlo. Otra vez. A lo que me refiero con eso es ir a punto de pantalla impar, punto. Y no teníamos fondos de inscripción asignar infantes. Y al final, me limitaría a escribir Navigator, el empuje y quitar hasta entonces aquí. Dentro de esa nueva ruta. Si escribo ruta de página de material Bender y contactos, y si escribo si escribo educación en casa, ver si agrego educación en casa, entonces tengo que enviar al usuario, que es el modelo de usuario. Por lo que tengo que hacer muchas cosas. Pero si escribo simplemente myapp, así, si simplemente escribo mi app. Por lo que normalmente volverá a ir a esta pantalla. Entonces mostrará un indicador de usuario y obtendrá datos del almacén de archivos y se convertirán y en última instancia los enviará a la pantalla de inicio. Entonces este es un enfoque mucho mejor. No tenemos que escribir el código una y otra vez. Entonces vamos a comprobar si reinicio. A ver. Obviamente no puedo revisar sí inicia sesión porque ya hemos ingresado. Entonces, al menos creemos y hagamos uso de este botón de cierre de sesión. Para eso, simplemente ve a la pantalla de inicio. Y aquí me haría pensar, lo siento, no esta búsqueda a este botón de icono. Async await es ahd dot instancia dot cerrar sesión. Y entonces yo haría un navegante. Pero empuja y quita. Hasta ahora, simplemente puedo escribir mi app en nuestra pantalla youart porque como sabemos que no está autenticada y tiene que ir y volver a iniciar sesión. Y la aspirina no está pidiendo nada como parámetro. Entonces lo es, no hace ninguna diferencia. A ver. Ahora si hago clic en él, veo que he estado firmando, sido navegado a la pantalla de arte. Y ahora si hago clic en iniciar sesión con Google, veamos qué pasa. Y luego se mostrará indicador de carga y la médicamente me han enviado a la pantalla de inicio. Entonces así funciona el estado. Eso significa cómo estoy utilizando el estado impar y asegurarme de que el usuario inicie sesión automáticamente y luego cierre sesión también. Entonces eso es todo por este video. En la siguiente sesión, trabajaríamos en este botón de búsqueda para que el usuario tuviera la capacidad de buscar a sus amigos en esta aplicación de chat. Gracias. 6. Búsqueda de la UI del usuario: Bienvenida. En esta sesión, simplemente crearemos una pantalla de búsqueda de este botón para que cada vez que un usuario haga clic en él, vaya a una pantalla donde deba poder buscar a sus amigos. Simplemente vamos a reproducirlo una nueva pantalla. Y me referiría a que buscamos pantalla dot dot. Importar nuestro paquete de materiales. Conviértala una región con estado. Y busco en pantalla. Y como lo hice con la pantalla de inicio, al navegar a esta pantalla también, requeriríamos esa clase de modelo que este usuario de UserModel. Y vamos a tenerlo en ese constructor. Y luego devolver un andamio. Eso no ha sido AB bar calificado título de búsqueda a tu amigo. Y luego en el cuerpo, lo que estoy planeando es primera región será sólo un texto. Vamos a cualquier botón de búsqueda, sea cual sea el usuario que haga clic en él. Y después de que haga clic en el botón de búsqueda, entonces sólo debe ejecutarse la función, que lo haremos en ese pequeño video. Pero ahora mismo, sólo la posición de Estados Unidos, requeriría una columna. Entonces niños, y como dije, estaré usando campo de texto. Por lo que declararíamos el texto editándolos más alto porque controlador de búsqueda y no los controlaba así. Y dentro de esto, Empecemos con la fila, el primer elemento quiero la fila porque quiero los widgets Botha, widgets de la misma manera horizontal. Entonces, vamos a tener esos hijos. Entonces, un campo de texto que controlador se buscaría controlador y decoración. Vamos a darle decoración de entrada. Texto con el nombre de usuario. Y frontera se delinearía en bota fronteriza bordeado. Y dentro de ella, Vamos a darle un radio de frontera. Radio de frontera, no circular. Dale 10. Entonces vamos a comprobarlo. Pero antes de eso, tenemos que asegurarnos de navegar en el botón que está usando la disfunción e ir a la pantalla de inicio. Y aquí en el on-premise, simplemente escribe el navegador dot push. Entonces mi diseño de página, contexto, pantalla anterior. Y tenemos que enviar al usuario y que es rígido, eso es aquí. Y vamos a guardarlo. Si hago click en él. Lo que tengo es que hice algo mal ya que era la fila dos, columna de sangrado. Entonces, a primera hora, le daría envolver esta cosa con un widget de relleno y darle ropa de cama o 15, luego envolverla agregando widget. Después nos expandimos. Eso significa tomar todo el espacio. Rápido. Dentro de pegado no envolver. Simplemente escribiré expandido tu cuchillo. Ahorro porque tonta sus DevOps como cuál debería ser el tamaño de esto? Y han hecho algo mal en esta columna, no debería estar ahí. Y eliminar este widget. Eso significa que tenemos un problema dentro de él. Tenemos una fila dentro de ella. Ahora tenemos esto expandido y todo. Vamos a comprobarlo. Supongo que por ese editor extra de Columbia estaba ahí. Ahora si hago clic en él, ver tenemos nuestro marco de texto con esto agregando otro sin expandir por lo que son menos espacio aquí. Ahora después de este widget expandido dentro de la fila, voy a dar un botón de icono. Y vamos a dar el icono para ser iconos re.search. Entonces eso es todo. Vamos a comprobarlo. Mira, está mirando el fregadero. Por lo menos sabemos que tenemos que teclear aquí y luego dar click en él. Y después de eso, aquí se mostrarán los resultados y eso haremos en el siguiente video. Entonces eso es todo. Hemos construido con éxito. 7. Implementar la funcionalidad de búsqueda: Por lo que en esta sesión trabajaremos en esa funcionalidad de búsqueda. Entonces tenemos ese campo de texto y un botón realmente enojado cuando escribimos un nombre de usuario, entonces los datos deben mostrarse en ese cuerpo, es decir del Firestone. Entonces, antes de seguir adelante, vamos a la pantalla de inicio. Yo solo quiero escribir una línea de código. Cuando estamos enviando. Deberíamos escribir esto también. Eso es Google. Inicio de sesión en Google, inicia sesión, cierre sesión. Por lo que tenemos que usar tanto esta línea de código para poder cerrar sesión. Porque si no usamos el inicio de sesión, inicio de sesión de Google, entonces no podremos iniciar sesión porque cuenta diferente todo ese tiempo, solo una cuenta que podremos usar. Pero por eso tenemos que asegurarnos de que escribimos esta línea de código. Excelente. Volvamos a la pantalla de búsqueda y comencemos a trabajar en ella. Yo crearía algunas variables, que será una lista que contiene mapas. Y yo lo nombraría resultado de búsqueda. Estará vacío al principio mismo. Y un valor booleano de carga. Tan solo para asegurarnos cuando estamos buscando datos. Podemos mostrar indicador de carga en la interfaz de usuario. Y este mapa de cosas de la lista no es más que cuando buscamos usuarios y los datos están llegando, es decir, estos datos vienen de la tempera de fuego. Será en formato JSON, es decir, formato de mapa. Y guardaré Alda, todos esos mapa de esta lista. Es decir supongamos que el Directorio utiliza, entonces habrá tres mapeándolo. Y como es una lista, usaré un constructor de vista de lista para dar salida a todos los usuarios en el cuerpo. Entonces trabajemos en la función de búsqueda. Tenemos que escribir en la búsqueda así. Yo lo nombraría en búsqueda. Entonces comienza con nuestro Firestore que esta Firebase dispara tienda plugin instancia esa colección. Y aquí iría a los usuarios y usaría una cláusula where para que pueda filtrar y obtener el nombre exacto que es cualquiera que sea el nombre de usuario que queremos buscar. Podemos bajar ese día. Lee se almacenará en el controlador de búsqueda y luego solo escribiré dot get. Entonces ahora después de eso, lo usaré entonces cláusula. Para que en cuanto consigamos los documentos que hay aquí, lista de documentos. Verificaremos si está vacío o no. Es decir, lo que sea que el usuario haya buscado. ¿ Existe? Para que lo pueda hacer solo usando la longitud. Y si es menor a 0, podemos mostrar un andamio, no andamio para que podamos, así como snack bar muestra snack bar y luego un francotirador. Y podemos escribir el contenido como ningún usuario encontrado. Dicho eso. Y también como dije, estoy usando este indicador de carga. Por lo que aquí, en cuanto hacemos click en la pantalla de búsqueda que está en búsqueda, escribiría el indicador de carga media como verdadero. Y si es nulo, es decir, no hay datos, entonces volveré a hacerlo falso. Y luego regresa de aquí. Es decir, no necesitamos ejecutar comillas de doble comillas si no hay ningún usuario disponible. Pero si tenemos una lista de usuarios, entonces usaremos esta variable de valor. Entonces los todos los documentos. Y entonces voy a recorrer por ella. Y nos dará detalles de un usuario en particular. Y simplemente, simplemente, escribiría resultado de búsqueda, esa es esa variable. Agregar puntos y datos de usuario como este. También. No quiero que el usuario pueda buscarse a sí mismo. Es decir, supongamos que tiene nombre de Juan. Y si escribimos a John, no quiero eso en el resultado de búsqueda. Podía verlo celular porque entonces estaría mensajeando solo. Entonces para asegurarse de que no está ahí donde el usuario que está buscando no viene. Podemos simplemente escribir datos no es igual a rígido dot user.email, ese es el usuario actual. Si no son iguales, entonces podemos usar y si son iguales, entonces eso no se almacenaría en esta variable de lista. Y después de eso, volveré a utilizar este estado conjunto se llama el falso. También lo que quieren es cuando hacemos clic en así en función de búsqueda, entonces se asegura de que sí la variable de resultado de búsqueda está vacía. Porque podríamos buscar varias veces. Supongamos que una vez que utiliza tal que usted, todos los detalles se almacenarán en esta variable. Pero si escribe otro nombre, entonces los resultados de búsqueda deberían estar vacíos. Así. Ya está lista la función. Trabajemos en la porción corporal que está dentro de esos niños. Tenemos esta fila. Y después de la fila, usaré una cláusula if. Es decir, si resultado de búsqueda longitud de punto mayor a 0, es decir, si hay algunos datos en él. Y si no, escribiré como si estuviera cargando es igual a verdadero. Después mostrar un centro de ancho rígido, indicador de progreso circular. Y vamos a trabajar ahora. Si la búsqueda no es la longitud de punto es mayor que 0. Empecemos con una región ampliada. Ya que estamos usando un constructor ListView. Por lo que tenemos que usar expandido para que se lleve todo el espacio y ya que será desplazable también. Por lo que en el conteo de ítems simplemente escribirá resultado de búsqueda. Pero tierra, Vamos a escribir encogedor, agarrar a través. Por lo que se lleva la base de datos se requiere. Entonces abajo tenemos el contexto y el índice. Y entonces simplemente devolveré un estilo de lista. Habría hecho un azulejo de lista con líder, como dije. Y el niño será imagen.Todo índice de búsqueda en red. Y entonces esa propiedad de imagen como esta. De igual manera en el título, escribiría nombre, es decir resultado de búsqueda, índice, y luego nombre. En ese subtítulo, escribiría como masa de pan, correo electrónico, índice, correo electrónico. Y luego en ese trailing, le daría un botón de icono. Esto estará vacío por ahora. Y seré iconos de Icon. Mensaje. Yo puedo, puedo iniciar mensaje. Pierna esto. Vamos a guardarlo. Pero como solo tenemos un usuario, no funcionará. Vamos a cerrar sesión y firmar con una cuenta diferente. Por lo que tenemos múltiples, al menos dos usuarios en nuestra aplicación. Ahora bien, si voy a la pantalla de búsqueda y vamos a ver, ¿viene? De acuerdo, lo siento, olvidé asignar esta función. Esa es esta función al botón de icono. Busca, así, entonces solo funcionará. Obviamente. Vamos a probarlo de nuevo. Con esta nueva cuenta. Yo buscaría podría ser la cuenta VS. Y dar click en buscar y ver. Está funcionando tan perfectamente. Y si tengo algo como John que no está ahí, y si hago clic en él, así que solo imagínate, si hago clic en esto, entonces no se eliminará ninguna fuente de usuario y los datos anteriores ya que me aseguré de que el resultado de búsqueda se ponga vacío. Por eso en vivo. Entonces eso es todo para este video. En el siguiente video, trabajaremos en este ícono de chat que es para que cuando busquemos a un usuario y lo usen aparezca, entonces podamos enviarle un mensaje con este ícono y habrá pantalla de chat. Entonces nos vemos en el siguiente video. 8. Construir pantalla de chat: Empecemos a trabajar en la pantalla del chat. Por lo tanto, crea un nuevo archivo dentro de la pantalla árbol estático y nombrelo. Pantalla de sombra, punto-punto, así. Y aquí, vamos a importar material y luego hacer que TI estate menos rígida Pantalla de chat. Eliminaré este constructor predeterminado. Porque ahora solo imagínate cuando tenemos una pantalla de chat, al menos deberíamos saber quién es el remitente y el receptor. Eso es quien en realidad es el usuario actual y persona arriba con la que está hablando. Por el momento que tenemos que leer requiere algunos parámetros son algunos datos en esta pantalla de chat. En primer lugar será el modelo de usuario. Ese es el usuario actual que está enviando mensajes. Lo primero es esto. Entonces segundo está el ID de amigo, es decir con quien está hablando, necesitamos ID de usuario, eso es ID único. Entonces necesitamos nombre de amigo. Y luego necesitamos cuerda final. Imagen de amigo. Algunos por los que necesito este nombre e imagen de amigo sólo para mostrar estos datos. Pero eso es demasiado alto si has usado su WhatsApp y sabes de lo que estoy hablando? Está en la parte superior y la imagen estará ahí y se hará el nombre de esa persona. Ahora, vamos a crear un constructor. Y excepto que es leer todos los datos, consiguió punto de usuario final, punto, nombre, esta imagen de amigo, así. Y luego en esa función de factura, digamos que se hizo un andamio en la barra de aplicaciones. Vamos a dar que el color de fondo es campo de inicio de color. Y entonces ese título, usaré una fila para que podamos generar múltiples widgets juntos. En primer lugar, widget será la imagen y lo haría circular usando clip rect. Frontera rígida. Dds es igual al radio punto circular así. Y luego en esa imagen de niño image.net amigo, esa es la cuerda y darle una altura de 35. Entonces usa caja de tamaño con cinco solo para dar algo de espaciado y luego texto. Esa persona con la que está hablando este día, el usuario actual está hablando y le dio un tamaño diferente. Por lo que no para navegar a esta página. Tenemos que ir a la pantalla de búsqueda. Y luego en este estilo tenemos este botón de icono. Y aquí navegaríamos, es decir, navigator, dot push, material, ruta de página, contexto. Y estamos enviando a la pantalla de chat, que requiere de todos estos datos. Vamos a escribirlo uno por uno. El usuario actual será rígido. Dot user, que ya estamos aceptando a esta pantalla. Amigo ID no será más que este índice que el índice de búsqueda y aquí te AD. Del mismo modo nombre será nombre e imagen será esta variable de imagen. Y también mientras navego, solo quiero establecer el estado y dejar vacío el controlador de búsqueda. Simplemente yo sólo quería cuando regrese, es cuando hace clic en el botón Atrás, entonces puede buscar a otro usuario si quiere. Eso es todo. Entonces vamos a probar esto. Ahora si hago clic en el botón Buscar, nuevo, busco un usuario. Entonces si hago clic en este chat, ahora puedo ver esto es el layout es similar a lo que siete se puede decir. Pero tenemos la imagen y lo hemos hecho en. Y solo recuerda, estoy enviando la imagen y nombrada vía el constructor que así se ve tan rápido. Si hubiera usado, de nuevo, su futuro aprenderá allí y luego lo traerá todo. Es, una experiencia no sería tan grande. Ahora, en esta pantalla de chat, Vamos a crear aquí un campo de texto y un botón Enviar para que el usuario pueda al menos estipender enviarles mensajes. Entonces dentro de esa pantalla de chat, después del bar, Vamos al cuerpo. Y lo primero que usaría un widget expandido. Por lo que el campo de texto de datos tomaría espacio Alda, luego un contenedor. Y aquí estoy construyendo así. Simplemente entenderás porque esta expandida es diferente, lo siento. Esto voy a explicar una reunión. Primero lo anotemos y se inserta. Entonces. Entonces decoración, decoración de cajas, color, blanco, borde ADS, borde de radio. Sólo. Izquierda. Vamos a dar radio circular 25. Y derecha, Volvamos a dar radio circular 25. Y por el momento, este, ese niño dentro de él, dejémoslo como contenedor vacío y vamos a trabajar en él después de algún tiempo. Y solo quiero mostrarte eso aquí. Este widget expandido tomará todo el espacio aquí. Ese es nuestros chats principales se mostrarán aquí más adelante. Y al final, tendremos nuestro campo de texto. Y me gustaría separar ese código ya que TextField tendrá mucho código dentro de él, incluidos los servicios Firestore. Entonces es por terroristas, crea un archivo separado para ello. Por lo que el código será limpio y manejable. Yo dentro de la split que supongamos que tenemos modelos, tenemos pantallas. Vamos a crear otra carpeta llamada widgets. En los widgets que los widgets separados serán devueltos aquí. Y yo lo nombraría mensaje texto campo punto, punto. Dado que se utilizará para enviar un mensaje, será un widget con estado. Yo lo nombraría marco de texto de mensaje. Ahora, como de costumbre, eliminaré al constructor. Y en esta pantalla, lo que necesitaríamos justo que hoy abajo el ID de usuario actual y una cadena amigable. Identificador actual. Y ya que este ID actual es por defecto. Labor de la Tormenta de fuego. Por eso tenemos que usar eso. Y luego un constructor, este dot-dot-dot NTID, este amistoso. Ahora, simplemente vayamos a la pantalla de chat. Y después del campo de texto del mensaje expandido, ID actual sería usuario dot UID. Y realmente amable. Veamos una cosa. Este UID es sólo cadena, así que vamos a ponerlo a disposición. Que sea una cuerda como esta. Y podemos hacerlo definitivo también porque no va a cambiar. Ahora, dentro de la función. Correríamos un contenedor y luego le daríamos un color. Lo primero que haría es darle un montón de colonos blancos comienzan de par en par. Y luego algo de relleno. En sets. Vamos a tener una fila, porque voy a mostrar una cadena de texto, cualquier botón de icono juntos. Por lo que este ampliado que hicimos es muy útil. Se va a utilizar mucho tiempo. Porque aquí quiero que este campo de texto escoja todo el espacio disponible. En esa declaración. Vamos a darle una decoración de entrada y etiqueta. El texto debe ser etiquetado, debe ser escriba un mensaje. Color de relleno. Vamos a darle una oportunidad. Y luego simplemente esbozar en orden. Vamos a darle un relleno 0. Entonces EDS, EDS punto circular, dale 25 ADS. Y como es un campo de texto, requeriríamos un controlador de edición de texto. Este controlador, veamos qué hay ahí. Ves, esto se ve tan bien. Mensaje y nulo. Después de eso, sólo quería botón aquí. Por lo que dentro de esta F que se expande, las redes tienen una caja de tamaño de dy ancho. Y entonces yo adoptaría archivo, le daría GestureDetector en húmedo no será nada por ahora. Pero en ese niño, Vamos a tener un contenedor edge insertos y darle una caja. Forma será de color de punto en forma de caja con azul. Y dentro de ella ese niño significará ícono simplemente. Puedo empezar a enviar color. Vamos a guardarlo. Y ver esto es que el botón enviar, Botón Enviar. Escribiremos el mensaje y lo enviaremos a la tienda de bomberos. Entonces eso es todo por este video. En la siguiente sesión, implementaremos que incendios almacene funcionalidad en ella. 9. Almacenar mensajes en Firebase: Ahora esto se hace sección más importante donde guardaríamos el mensaje enviado en Firestore. Entonces ese concepto será, crearé una nueva colección llamada mensajes dentro de la colección del usuario, es decir dentro de ésta y dentro de un usuario, crearé una nueva elección mensajes. Supongamos así. Y luego, y luego tendrá el ID del usuario con el que este usuario está hablando, su amigo clavando. Será así. Supongamos mensajes. Entonces será identificación de la persona con la que está hablando. Y luego en esa colección, otra vez, dentro de ella tendré una colección llamada chats. Y dentro de este chat, almacenaremos todos los mensajes, como supongamos mensaje Hola, amigos, supongamos entonces otro campo será fecha. Supongamos que otro campo puede ser de tipo. Será mensaje de texto. Y esto se incrementará auto. No eso usa porque aquí, puede haber muchos chats. Un mensaje de alguien sólo en este video puede ser muchos mensajes. Y aquí dos más. Datos o T será el L1 está centrado ID y uno es que dicen, Bueno, no me gustó esto. Yo crearía estos mensajes colección tanto en los usuarios que están hablando entre sí para que ambos tengan mensajes recientes mostrados en su perfil. Y aquí también tendré algo llamado supongamos aquí, esto es un ID de usuario. Dentro de esto aquí tendré una película de último mensaje. Simplemente, entenderás por qué estoy usando este último campo de mensaje. Pero ahora mismo, sólo tienes que tratar de entender correctamente lo que estoy a punto de escribir. Lo que sea que te mostré, escribiré todo en ese código. Entonces código a mensaje, cadena de texto. Y aquí en el GestureDetector. Lo primero que escribiría una variable llamada mensaje de cadena es igual al texto de punto del controlador. Tendré el mensaje dentro de ella. Y entonces despejaría el controlador. Eso es lo que quieren tener. eliminará el tipo. Pero sólo hemos distorsionado, por lo que no es un tema. Entonces usaría la instancia Firestore. No obstante en esa colección, usuarios, obtendría ese documento de este usuario con eso es el CurrentUser. Dentro de ella, crearía una colección llamada mensajes como te mostré. Entonces dentro de ella, voy a crear un documento a esa persona. Este usuario actual está hablando con su amigo. Y entonces crearía otra colección llamada chats. Y luego agrega así. Sé que puede ser un poco abrumador, pero así es como podemos hacerlo. Obviamente la ADA y otras formas también. Pero se me ocurrió esta solución. Ahora, lo que tenemos que ahorrar es el ID de remitente en ayunas. Segundo es el ID del receptor. Podrías estar pensando por qué estamos guardando receptor si ya has almacenado esos datos. Pero solo estoy explicando por qué estoy usando esto para que si es un remitente, el mensaje se muestre en el lado derecho. Si se trata de un receptor, supongamos que el mensaje se mostrará en el lado izquierdo así, solo para diferenciar que el mensaje en sí. Al igual que esto. Entonces nuestras masas cuando tecleamos de Beck. Pero si quieres, puedes implementar más adelante para esos son archivos también. Depende de ti. Y la fecha es muy importante. Por lo que será fecha, hora ahora para que podamos filtrar y llevar sus mensajes recientes en orden descendente. Ahora, lo que quiero es después de que se almacene esto, volvería a tener un Firestore, esa colección. Nuevamente una consulta, luego Vg, usuario actual. Pero mensajes de colección. Y aquí pondría algo en este documento que está llegando amigable, pero establecer sólo uno. Ese es el último mensaje, así. Y aquí se mostrará así, este último mensaje, si lo tienes, si estás usando lo separado ahora y si has visto la página de inicio, puedes ver en el subtítulo ese último mensaje que enviaste o recibiste. Y luego puedes dar click en el chat y leer todo el chat. Entonces eso es, eso no lo es. Intentemos probar este código al principio porque solo se almacenará en la colección de un usuario. Como dije, el mismo código debería ser también para un receptor. Pero vamos a probar si está funcionando correctamente o no. Ver, ahora se retira. Y estamos esperando que se almacene en ese año en curso. Esa es la colección de este usuario. Si hago clic en esto, ver estos mensajes, entonces este ID y el ID de este usuario es el mismo que yo estaba explicando. Entonces está hablando con este usuario. Y si voy a este usuario, ese último mensaje fue transmitido. Y el chat fue sólo un cheque que este, este mensaje solamente. Ahora, lo mismo que tenemos que hacer por el usuario que está recibiendo también, que se actualice en su perfil ya que ese es el mensaje. Y en este momento solo estoy quitando esto porque necesitamos el mismo mensaje para el usuario. Ahora guardó el mismo mensaje en esa colección del usuario con el usuario actual está hablando con este final. Aquí está terminando. Después de eso coincide, tener el mismo código. Archivo, este almacén de archivos, usuarios de colección de puntos. Pero doc. Ahora aquí será amigo. Simplemente recuerda ese usuario actual, vamos dentro del usuario amigo y obteniendo una colección llamada mensajes. Entonces usan ese amigo está hablando con este usuario, que es virginia dot actual ID. Y vamos a crear una colección y añadir, digamos, las redes tienen el mismo ID neto que la corriente de punto rígido. Yo hice esto, este mensaje fue mandado Vida. Este usuario. Después el ID del receptor. Id. Entonces mensaje será tipo, será texto D. Cumplirá con los moribundos. Ahora. Y después de que se haga. Y de nuevo, guardó el último mensaje. Es justo a esa instancia, no a los usuarios de colección. Dot, dot, dot, dot collection mensajes, dot doc. Pero ID actual. Eso es solo recto. El último mensaje es un mensaje. Entonces sé que esto no es para digerir, pero te sugeriré que solo pausas el video e intentes entender ese código línea por línea. Porque este concepto no es tan complicado. Pero hay mucho código involucrado que de esta manera. Ahora, vamos a probar. Si sigo y de nuevo busco, consigue el usuario. Y ahora si escribo cómo se va a almacenar en ti y enviar este mensaje, se debe almacenar en ese usuarios. Ver primero y segundo. Y aquí está hablando con esta persona. El último mensaje fue ¿cómo estás? Y entonces quién manda fecha del mensaje? Entonces eso es todo. Para este video. Tienes que entender ese concepto y el tribunal adecuadamente. En el siguiente video, trabajaremos en buscar, enviar mensajes SMS y mostrarlo en este cuerpo. Gracias.