Supabase para desarrolladores de Flutter - Autenticación, base de datos y almacenamiento | Rahul Agarwal | Skillshare

Velocidad de reproducción


1.0x


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

Supabase para desarrolladores de Flutter - Autenticación, base de datos y almacenamiento

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 AL CURSO

      1:09

    • 2.

      ¿Por qué usar Supabase

      5:23

    • 3.

      Crea un nuevo proyecto

      13:55

    • 4.

      Configuración de la pantalla

      12:25

    • 5.

      Trabajar en la interfaz de usuario de StartPage

      16:46

    • 6.

      Implementar la suscripción y la señal

      10:25

    • 7.

      Función de cierre

      5:16

    • 8.

      Integración de enlaces profundos

      5:15

    • 9.

      Configurar Google Oauth

      7:09

    • 10.

      Cómo implementar sesión de Google

      12:00

    • 11.

      Trabajar en la interfaz de usuario crud

      15:46

    • 12.

      Implementación de la funcionalidad

      14:13

    • 13.

      Implementar funcionalidad de lectura

      9:03

    • 14.

      Filtros y modificadores

      14:25

    • 15.

      Implementar una base de datos en tiempo real

      7:12

    • 16.

      Actualizar y eliminar funcionalidad

      10:59

    • 17.

      Activación de la seguridad de nivel de hilera

      8:55

    • 18.

      Redacción de políticas de CRUD

      3:26

    • 19.

      Configuración de almacenamiento

      6:47

    • 20.

      Implementar funcionalidad de carga

      16:57

    • 21.

      Fetch Imágenes subidas

      17:17

    • 22.

      Eliminar la funcionalidad de imagen

      6:54

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

53

Estudiantes

1

Proyecto

Acerca de esta clase

"Supabase para los desarrolladores de Flutter," es el punto de partida perfecto para los principiantes que quieren aprender a usar la plataforma Supabase en sus proyectos de Flutter. Supabase es un backend en tiempo real que hace que sea fácil agregar una potente funcionalidad a tu aplicación. Con este curso, aprenderás cómo configurar un proyecto de Supabase, autenticar usuarios usando correo electrónico y contraseña, así como Google Sign-In, realizar operaciones de CRUD en la base de datos, implementar seguridad a nivel de línea y cargar archivos al almacenamiento.

El curso está diseñado para ser fácil de seguir, con explicaciones claras y ejercicios prácticos que te ayudarán a aplicar lo que hayas aprendido. A partir de los conceptos básicos de la configuración de Supabase, aprenderás a crear un nuevo proyecto, instalar los paquetes necesarios y conectarte a la API de Supabase. A partir de ahí, pasarás a la autenticación de usuario, donde aprenderás cómo crear un sistema de inicio de sesión básico para tu aplicación.

Una vez hayas dominado los conceptos básicos, te sumergirás más en la funcionalidad de Supabase's Aprenderás a realizar operaciones de CRUD en la base de datos, incluyendo agregar, actualizar y eliminar datos. También aprenderás cómo implementar la seguridad de nivel de línea, lo que te permitirá controlar quién puede acceder y modificar datos específicos en tu base de datos.

Además de esto, también aprenderás cómo cargar archivos al almacenamiento, que es una característica esencial para muchas apps. Aprenderás a manejar las cargas de archivos, almacenarlas en la nube, recuperarlas y eliminarlas más tarde.

Al final de este curso, tendrás una sólida comprensión de cómo usar Supabase en tus propios proyectos de Startup o Flutter. Inscripción ahora y comienza a crear aplicaciones poderosas con Supabase y Flutter.

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: Beginner

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 AL CURSO: Si fuéramos a flutter developer, entonces podrías estar familiarizado con Firebase. Firebase no es la única opción en el mercado. Hay otro competidor que es una muy buena alternativa, y se le conoce con el nombre de Superbus. Superbus está ganando popularidad día a día y está recibiendo una buena respuesta de la comunidad. La mejor característica es su naturaleza de código abierto y su modelo de precios. La base de suministros es gratuita para comenzar y su gráfico de plan de pago es una tarifa mensual plana para su uso ilimitado en lugar de pagar sobre la marcha, lo que puede ser muy costoso a largo plazo. Este curso está diseñado para principiantes. Comenzaremos configurando un nuevo proyecto supervisor. Después aprenderemos cómo permitirle la indicación usando correo electrónico y contraseña así como implementar el inicio de sesión de Google. Después de eso, entraremos en operaciones de crud de base de datos. También escucharemos los cambios en la base de datos en tiempo real a través de transmisiones. Luego, comprenda el concepto de seguridad a nivel línea y cómo escribir políticas para proteger nuestra aplicación. Y finalmente aprendió a subir y eliminar archivos en este almacenamiento. Al final del curso, podrás construir tu propia startup soñada usando todos estos conceptos y quién sabe, puede ser la próxima gran novedad en la industria tecnológica. Así que sin desperdiciar más diamante, Empecemos. 2. ¿Por qué usar Supabase: Hola, bienvenidos al primer video del curso donde aprenderemos a usar base de datos supervisada con tecnología de desorden. Entonces, ¿qué es Superbus? Superbus es una plataforma de back-end potente, de código abierto y en tiempo real que facilita la creación y ampliación de aplicaciones web y móviles. Para biorwaste se construye sobre la secuela de Postgres, una poderosa base de datos SQL que facilita el trabajo con estructuras de datos complejas y relaciones. También cuenta con soporte incorporado para autenticación, autorización, lógica del lado del servidor y almacenamiento. Wildfire, que existe desde hace bastante tiempo y tiene una amplia gama de características. Entonces Barbies es relativamente un jugador nuevo en el mercado, pero rápidamente está ganando popularidad entre los desarrolladores debido a su naturaleza de código abierto. Tiene características potentes incorporadas y su flexibilidad. Con Superbus, tienes un control total sobre tus datos e infraestructura y puedes personalizar el servicio para que se ajuste a tus necesidades. En este curso, nos enfocaremos en aprender sobre autenticación, base de datos, seguridad a nivel de fila y almacenamiento de una manera simplificada paso a paso. Pero antes de mudarnos ahí, discutamos algunos puntos sobre por qué deberíamos elegir supervisar sobre Firebase. El primer punto son las bases de datos SQL vs NoSQL. base de datos de secuela de Postgres es particularmente poderosa cuando se trata consultas complejas, combinaciones y filtrado. Debido a que los datos están organizados en tablas, Relaciones definidas. En supervise, puede usar el comando join para combinar datos de varias tablas donde desea recuperar datos relacionados en una sola consulta. También puede usar el filtrado y clasificación de comentarios como donde un ordenBy para recuperar subconjuntos específicos de datos. Por el contrario, las bases de datos NoSQL como base de fuego, uso de datos puede ser más difícil y menos eficiente. modelo NoSQL de Firebase no tiene el mismo soporte incorporado para consultas complejas, combinaciones y filtrado. Por lo tanto, es posible que tenga que recuperar datos de múltiples documentos y luego realizar esas consultas en el lado del cliente. Una segunda diferencia importante es el modelo de precios. Ambos son gratuitos para los principiantes. Es decir, puedes empezar gratis. Pero el modelo de precios de Superbus es más flexible y rentable que Firebase. Supervisar. Cobra el plan pagado, una tarifa mensual plana para usuarios ilimitados, mientras que Firebase cobra en función de los usuarios y tiene costos más altos para usuarios mayores. A largo plazo, si tu aplicación crece, aumenta el uso anual. Entonces el tercer punto es importar datos preexistentes. Diríamos omnipresente. Podemos importar fácilmente un CSV o copiar y pegar una hoja de cálculo para poner en marcha el proyecto. Esto es genial si estamos migrando datos de otra plataforma a superbugs. Firebase no ofrece servicios incorporados que nos permitan cargar datos masivos directamente. Puede que tengas algunos paquetes de terceros, no lo sé, pero no está incorporado. El siguiente punto es el autohospedaje. Muchos desarrolladores pueden querer una aplicación autoalojada. Espere por razones de seguridad o escalabilidad. Cuando se trata de auto-hospedarse, Dan dijo que es simple. Firebase no nos permite vender, obligó a nuestra aplicación. Bueno, súper negocios, tenemos el autohospedaje es importante para ti. Entonces Superbus es la mejor opción. Entonces. El punto final es no tener bloqueo de proveedor. Cuando utiliza un servicio basado en la nube, es importante considerar el potencial de bloqueo de proveedores. El bloqueo de proveedores ocurre cuando se vuelve dependiente de un proveedor en particular del Servicio Forestal, lo que hace que sea difícil o costoso cambiar a un proveedor diferente. Así que Bobby nos da la libertad cambiar a otro proveedor en cualquier momento sin ningún costo adicional. Pero este no es el caso de Firebase. Estamos atrapados con la plataforma de Google para siempre. Entonces o se nos permite ser autoanfitriones desde el principio, o supongamos que empiezas con Superbus, pero más tarde quería cambiar la plataforma que también está permitida en súper base. Entonces por estas razones, también creo que Superbus es más amigable o es más adecuado para personas que no quieren arriesgarse a tomar la base de datos Firebase y obtener una factura enorme por algún código o por algún error en su aplicación. Porque como no hay cargos fijos en Firebase es que tus gastos pueden aumentar exponencialmente. Entonces eso es todo. Sin perder más tiempo en la porción teórica. Ensuciémonos las manos y empezaremos a trabajar en nuestra app de flutter en el siguiente video. Gracias. 3. Crea un nuevo proyecto: Ahora es el momento de que empecemos y creamos un nuevo proyecto de flutter. Y estoy asumiendo que ya tienes instalado flutter SDK en tu sistema. Ve a tu carpeta preferida y escribe ese comando para crear un nuevo proyecto. Crear Superbus. Yo lo haré, voy a nombrar a la carpeta esto. Puedes ponerle el nombre que quieras. Vamos a entrar. Tardará apenas unos segundos. ¿Bien? Ahora, nuestro proyecto se ha creado con éxito. Simplemente escribiré, primero iré a Flutter. Eso es esto doblado. Después escribe el espacio de código de comandos para abrir esa carpeta en nuestro Editor de Código VS. Puedes ver aquí tenemos todos estos archivos y carpetas. Ahora es el momento. Creamos una nueva cuenta Superbus y luego usamos esos ajustes en nuestro proyecto más plano para conectarlo. Simplemente vaya a supervise.com así e inicie sesión con su cuenta. Ya me he registrado. Entonces ahora aquí se puede ver que no tengo ningún proyecto. Entonces primero, tenemos que crear un nuevo proyecto. Dirá su organización. Entonces, cuando inicies sesión, también puedes crear una organización. Voy a anotar el nombre del proyecto como aleteo, súper base. Usa cualquier contraseña. Yo solo escribiré generar una contraseña. Eso es. Después elige estudios y cuál es el más cercano a ti. Yo sólo voy a elegir éste. Y voy a empezar con el plan de precios es gratis. Bien, Ahora, Crear Nuevo Proyecto. Después de crear el proyecto, tomará de dos a 3 s que puede ver para construir una base de datos y obtendremos nuestras informaciones de API. Entonces aquí puedes ver que tengo las claves API y la URL también. Y también puedes obtener los mismos detalles de API en esta sección. Esa es la página de Configuración más adelante si quieres, y ve a esta API en la barra lateral. Éste. Ahora, usaremos esas claves API en la app flutter. Y para eso, voy a usar una dependencia. Simplemente vaya al pub Dev aquí, justo primero, Flutter Superbus. Esta es la dependencia que usaré para conectarme con dw es copiarla. Ve a tu carpeta, luego Pub spec dot YAML. Y lo voy a pegar aquí. Pulse Intro. El siguiente paquete que quiero se llama punto ENV. Este paquete se utiliza para que nuestras contraseñas sean sensibles. La información no se ve comprometida porque no es recomendable escribir directamente en la interfaz de usuario. Sólo cópielo y pegarlo. Eso es. Ahora, ambos paquetes están instalados. Para usar ese paquete dot ENV en la carpeta raíz, tenemos que crear un archivo con solo la extensión que es dot ENV. Nombre. Aquí escribiremos nuestras credenciales. Voy a nombrar es super base, URL es igual a. Y en segundo lugar son formas soberbias. K es igual a. Volvamos a ir a tu tablero de instrumentos. Tienes esta URL aquí, cópiala y pela en la URL. Entonces otra vez, ve a ver aquí tienes público y en clave. Sólo cópielo y pegarlo en esa clave. Eso es. Simplemente cierra los puntos ENV que no lo quieres. Otra vez. Para asegurarnos de que nuestra aplicación pueda acceder a ese archivo punto ENV. Hay que mencionarlo en el patrimonio. Eso es ir a Pub spec punto YAML. Y abajo aquí en la línea 65 se puede ver que se está comentando. Simplemente primero, eliminar sin comentar. Aquí. Nuevamente, poco común el primero. Y punto derecho ENV. Y recuerda siempre que este archivo pub spec dot YAML es muy sensible. Si tienes algún error de tabulación o espacios aquí y allá, entonces arrojará un error. Entonces esto también se hace. Ahora es el momento de que inicialicemos nuestra app. Así que ve a limbo y punto principal punto. Y tenemos que inicializar el cliente Superbus en nuestra función principal con las credenciales API que hayas copiado anteriormente. Es decir, usted ha mencionado en ese archivo punto ENV. En primer lugar, sí, Importar paquete súper base aquí. Y así importar punto e. y nosotros hicimos esto no ENV barra diagonal letra punto ENV, así. En la función principal. asegura de que lo conviertas en un fregadero. Entonces hay que escribir estos comentarios que son rígidos. Vinculante Florida. Asegurar la inicialización para asegurarse de que todo esté inicializado. Lo primero que tenemos que hacer es cargar ENV. Estos esperan la carga de punto ENV punto. Este es el comando dado por ese paquete. Entonces tenemos que inicializar la sopa siempre. Simplemente primero obtendré URL súper base, es decir punto ENV, luego ENV. Y aquí voy a añadir esa clave que es tan URL base. Y si es nulo, solo usa esta cadena vacía. Y URL es capital. Estas cosas darán error. Después pegarlo y voy a añadir los nombres de las variables arriba es clave. Y esto será clave. Después de eso, simplemente esperar súper base, no inicializarla excepto cURL. Eso lo tenemos. Y en clave de rehabilitación eso también. Oh, bien. Tenemos estas cosas. Es el momento. Estructuramos nuestro proyecto en carpetas. En lugar de escribir todo en ese archivo punto punto principal, simplemente vaya al laboratorio, cree una carpeta y nombre páginas. En su interior crean dos páginas más. Es para mover archivos de punto Página de inicio punto, punto y página de inicio punto, punto. Así. En la página de inicio. Simplemente importa ese material. Entonces se quedó menos rígido. Y página de inicio. Creé este rígido en cuestión de segundos usando algunas extensiones aquí. Por lo que también puedes agregar estas extensiones. Sí, realmente giro hueco para entonces cuerpo, luego const center. Niño. Simplemente escriba la página de inicio. Cambiaremos estas cosas obviamente más adelante. Entonces solo estoy pensando ¿por qué están aquí estas líneas? Bien, dejémoslo otra vez. Ir a la página de inicio de importación, mi TTL, luego fecha menos rígida. Nombrarlo inicio. Después regresa, andamio, luego cuerpo, luego centro. De nuevo simplemente escribiré el nombre de la página por ahora. Es página oscura. Esto es N palabra, ¿no? Bien. Pero más adelante obviamente tenemos que eliminar esta constante. Y ahora veamos qué pasa en los videos posteriores. Ahora, todo está hecho aquí. Después siguiente video, trabajaremos en la porción de autenticación y las páginas. Dicho esto, viendo el siguiente video. 4. Configuración de la pantalla de la junta: Hola. Ahora es el momento de que aprendamos sobre autenticación de usuarios en Superbus. Ve al archivo punto punto principal y elimina todo lo que hay debajo de esto, mi app. Vamos a quitarlo. También eliminaré estos comentarios solo para que se vea limpio. Ahora cree un nuevo widget con estado y asígnele el nombre. Eso es con se quedó por rígido y nombra arte. Bien. Ahora, en esta página de arte, mostraremos o redireccionaremos a la redirección al usuario, según si el usuario ya está autenticado o no. Es decir, solo comprobaremos si un usuario ya ha iniciado sesión previamente o si es un usuario nuevo. Entonces eso es lo que voy a hacer está aquí. En primer lugar, voy a crear una súper Instancia Base. Es instancia ciega. Supongamos que siempre supervisar es igual a superautopistas punto instancia cliente. Así es como llamamos a las funciones proporcionadas por Superbus. Después de eso. Así que surveys, regalos, nuestras devoluciones como usuario. Sólo voy a tener esta variable de usuario. Recuerda, esto viene de Superbus. Simplemente asignaré eso a este usuario más adelante. Y ahora aquí, sólo voy a comprobar si usuario es igual a nulo. Entonces voy a crear esta página que es página oscura. Tengo esta página. Recuerda en el último video o en la página principal. Es simple. Lo es. Si el usuario ya está ahí, entonces inicia sesión directamente, lo firma en la página principal o de lo contrario le van a iniciar sesión. Aquí. Haz de esta página el hogar. Y ahora nuestro laboratorio de materiales. Esto está hecho. Ahora. Lo que vamos a hacer son súper formas, regalos, como pocas funciones, es decir, para meternos en usuario. Este es el comando. Entonces el punto de Bobby, el punto se metió en el usuario. Tan agradable. Command devuelve un objeto de usuario. Bien, tan simple como eso. Ahora vamos a crear la función futura. Obviamente. Tomará unos segundos. Por eso este nombre consigue arte. Un fregadero. Espero que sepan todo este concepto básico es lo que se llama este futuro. Y porque estos son requeridos para este curso. Ahora aquí, simplemente voy a decir que es esta variable de usuario a ese comando, es Usuario punto, punto, usuario actual. Y aquí puedes ver, esto nos da este usuario. Si pasas el cursor sobre él, nos da este usuario, puede ser nulo así como puede tener valor. Y después de eso, lo que queremos es, queremos escuchar. Eso es en nuestro cambio de estado. Lo que simplemente significa que si el estado del usuario cambia, es decir, el usuario se desconecta o los inicios de sesión, nuestra página se volverá a cargar. Es decir, podría volver a enviarse a la página principal o a la página de inicio. Aquí. Y aquí. Deberíamos escuchar. Este es el evento. Y ahora aquí mencionaremos set state. El usuario es una llamada al evento punto sesión punto usuario, y esto también puede ser nulo. Entonces eso es si no es ninguno, entonces simplemente asignando el valor nulo. Si se cernía sobre él. Ver, esto es gaming como este usuario. Entonces simplemente significa obtener usuario actual. Puedes usar nuestra función de usuario de corriente oscura. También existe esta función. Esta sesión. A partir de la sesión, se pueden obtener los datos del usuario. ¿Bien? Ahora, voy a llamar a esta función en el estado init. Es decir, cuando se está renderizando esta pantalla, lo primero que usted, él tiene, esta función tiene que hacer es llamar a esto. Y después de eso, según el valor del usuario, se devolverá la pantalla. Entonces tenemos esta cosa lista. Es el momento. Ejecutamos la aplicación. Y también lo voy a cambiar por el nombre a Florida Superbus. Y tengo la página de inicio como este arte ahora mismo. Bien, hagamos esto constante más adelante. Si lo requiriéramos, lo cambiaré. Y voy a eliminar ese binario de depuración también. Ahora, ejecuta esta aplicación. Puedes usar dispositivo virtual, también son tu dispositivo físico. Puede conectarse a través de un cable USB y habilitar la depuración, depuración en su dispositivo móvil. Pero simplemente voy a usar emulador. Sube y Android Studio aquí más acciones que Virtual Device Manager. Ya creé este dispositivo, pero puedes crear un nuevo dispositivo desde aquí. Y a ver estoy usando pixel para API 30 y leí 11. Sólo lo empezaremos aquí. Si tu sistema no es potente, supongo que Android Studio lo hará más lento o el Ártico quedará rezagado. Ahora tienes tu dispositivo aquí. Y puedes ver en este Código VS, mi dispositivo ya está activo. Simplemente ejecutaré y empezaré a depurar. Tiempo. Lleva algún tiempo. Entonces hay que esperar y tener pacientes. Yo solo quiero decir, supongamos que quieres saber más sobre autenticación, funciones y terminologías, entonces puedes ir al sitio oficial de supervisar. Aquí entenderás más sobre las sesiones actuales de los usuarios y todo. Pero principalmente hay pocas cosas, solo pocas palabras clave y creo que es un inglés muy sencillo. Entonces no debería ser tan difícil de recordar. Está tomando algún tiempo, pero supongo que tenemos que esperar. No hay otra opción. Y ver. Tengo esta advertencia. No es que la aplicación no se ejecute, pero tengo esta advertencia aquí que es cambiar la versión del Compiler SDK. Entonces te voy a mostrar cómo se hace así. Pero si no estás recibiendo estas líneas rojas, entonces está bien. Pero en mi sistema, tengo el actualizado. Pero como se puede ver, se construye con éxito. Sé que tomó mucho tiempo. Espero que su sistema no tome este tiempo. Veamos qué es lo que se renderizó inicio o casa. Ver, tenemos esta tercera página aquí. Entonces la app es exitosa entonces en eso es que Superbus también está conectado y no hay agregado en ella. Y además solo te diré cómo resolver esto. Cerrar. Sólo estoy deteniendo la aplicación. Entonces. Vaya a la carpeta Android, luego a la aplicación, luego al archivo Gradle acumulado. Aquí. Verás subyacente 29. Esta compilación versión SDK. No compilar la versión SDK. Yo sólo voy a quitar el aleteo y a la derecha, 33. Eso es. Y guárdala. Y ahora, simplemente ve y vuelve a hacer de nuevo para que empiecen a depurar. Y espero que no vean ninguna línea roja ni ninguna advertencia aquí. No quiero volver a hacerlo, esperar a que se ejecute esta aplicación. Entonces nos vemos en el siguiente video. 5. Trabajar en la interfaz de usuario de StartPage: Hola, bienvenido de nuevo. Así se puede ver en la consola de depuración que no hay advertencias después de que cambiemos, el compilador ha decaído la versión SDK. Es hora de que trabajemos en la IU de la página de inicio. Esta es la página donde el usuario puede iniciar sesión así como registrarse. Lo primero que tenemos que hacer es que sea una versión completa estatal. Porque obviamente vamos a estar trabajando con muchos estados. Y comencemos a escribir nuestros estados. Lo primero es que súper maneras instancia de cliente. Así que el cliente punto instancia punto de Bobby. Lo siguiente es que tenemos valor booleano de E está diciendo en la carga será falso por primera vez. Y otra es, no es, es solo voy a escribir registro carga cargando, así, iniciar sesión cargando, y aquí será registrarse cargando. Esto también es falso. Entonces inicia sesión e inscríbete requerirá impuestos a las ballenas que estoy teniendo. Este controlador de edición de texto es el concepto en flutter. Y obviamente el correo electrónico es su contraseña también estará ahí. El controlador de bus es igual a x controlador de todo. Entonces usaremos el widget de formulario que requerimos. En clave. Estas son solo sintaxis. Hay que recordar que estas formas de bajo volumen indican el nulo. Y siempre me acordaré de disponer los estados que no son todos, principalmente instancia de propósito. Y las cubiertas editando y refresco más fresco, no hay pérdida de memoria. K, No, vaya abajo. Y él tenía en cuerpo voy a tener este centro. Pero en ese niño, ese niño tendrá la forma visión y bomba tendrá columna k, c. y un año es un valor obligatorio de K G, N aquí, ya que vamos a comprobarlo. Sí, ahí Foleys, bien. Las constantes no deberían estar ahí. Eso es. Ese era el tema aquí. ¿No debería ser constante? No. Vamos a utilizar estas propiedades de columna que es la alineación principal existe, media existe alineación centro de datos. cruz x es tierra, exceso bruto de alineación central y no centrada. Yo sí, te estiras. Y voy a envolver esta forma. ¿Cuál hijo soltero? Vista de desplazamiento. No hay ningún error cuando estamos escribiendo. Es decir, cuando estamos escribiendo el correo electrónico, no se agrega una contraseña. Diciendo que la interfaz de usuario, simplemente olvidé el sumador, pero si eliminas el desplazamiento de un solo canal, lo conseguirás. Déjame mostrarte más tarde. Después de este foro. En esta columna, voy a dar un poco de relleno de hacer así. Lo primero, siempre obtendré una imagen de red. Simplemente vaya a Google Images y serge el icono del logotipo de Superbus. Yo sólo voy a abrir imagen. Aquí. Son el pegamento. Vamos a copiar imagen y solo veamos si es punto PNG o no. Saber. Esto podría dar algunos porque no deberías tener una imagen donde tenga esta extensión. Copiemos esta dirección de imagen y base. Esta es mi imagen. Simplemente abre esa misma imagen. Y ahora como copiar dirección de imagen. Ahora si lo pego, mira esto tiene esta extensión que PNG. Y de veras di. Altura alta de 150. Guárdalo. Tienes app funcionando. No sé qué Stat Edit. Ok, hay algo de materia. Se trata de tres imágenes robustas que la red está ahí. Yo no lo creo. Debería haber algún error, pero acabo de reiniciar. Otra vez. Simplemente voy a cambiar la imagen. Obtendremos datos y nuevamente, usaremos esta imagen. Vestido B mayor. El, es tan gracioso que no se puede obtener una imagen. Hombre. Y veamos, usemos algunas otras cosas. Sólo voy a dar algunos otros widgets y más adelante genes esa imagen, campo de correo electrónico, contraseña, amigo. El siguiente campo. Y solo voy a usar alguna caja de tamaño, darles espaciado. Y botón elevado. Tener un inicio de sesión. A ver. ¿Hay algunos agregados aquí? Simplemente lo detendré y lo ejecutaré de nuevo. Aquí tenemos esta salida. El logotipo, dos campos de texto, cualquier botón de inicio de sesión. También tendré un botón de registro aquí, y solo usaré divisor. Ser const. Entonces. Solo tiene un botón de esquema y registro de crianza de niños. Eso es. Entonces tenemos el andamio y centro de ropa de cama está ahí. Bien. Ahora vamos a decorar el formulario de texto para que el campo de correo electrónico sea coincidente. Voy a usar el validador para que nos aseguremos de que no se está presentando. Vacío. El valor es igual a nulo. El punto de valor está vacío. Simplemente volveremos, se requiere. O de lo contrario, si todo está bien, simplemente devuelva nulo. Es decir, no hay error de validación. Entonces tenemos al controlador como controlador de correo electrónico. Declaración. Y poner decoración. La etiqueta es igual a correo electrónico y teclado tipo X tipo de entrada dirección de correo electrónico punto. Ahora ve al autobús para campo de contraseña. Ahora tenemos validador. Si el valor es igual a nulo, y si el valor está vacío, entonces se requiere retorno. Rl. Así que gira ese controlador, hemos arremolinado la decoración del controlador. Decoración, límite es igual a texto, espada y oscurecido. X es igual a verdad. Es decir, el usuario no debería ver lo que está escribiendo. Ahora guárdala. Echa un vistazo a nuestra app y ve que se ve decente. Obviamente, este no es un curso de UI. Nuestro enfoque es aprender el Superbus. En ellos. siguiente video, aprenderemos a implementar funcionalidades de inicio de sesión o registro. Y Q. 6. Implementar la firma y la señal: Hola, entonces tenemos nuestra interfaz de usuario lista. Ahora es el momento de implementar este signo de funcionalidad. Entonces esta instancia de Superbus tiene arte, como viste aquí que está en el main.out. La funcionalidad de registro de socios. La sintaxis es como la sintaxis. Súper maneras nada, arte, no apuntarte. Y aquí tenemos que enviar correo electrónico y contraseña. Eso es. Este es el índice de lista requerido. Y nos devolverá sesión así como usuario. Ahora, para implementar esto, nuestro botón de registro está aquí. En primer lugar, voy a hacer es solo comprobar que esto es registrarse cargando hay entonces const Centro gigante indicador de progreso circular. Esto es así que ese indicador de progreso o de lo contrario Vayamos a la prensa y hagamos constantes de este niño. Ahora lo primero que tenemos que comprobar que está en el formulario es válido. Esto es válido es igual al estado actual de punto qi bomba. No habitar en ella. Lo primero que tenemos que verificar es si es válido o no. Y si lo es, si no es correcto, entonces solo asigne el valor nulo. Ahora, tenemos una declaración if. Si es válido, no igual a verdadero, entonces simplemente volveremos de aquí. O de lo contrario enviaremos al DOT Estatal. carga de registro es verdadera. Sí, mostraremos un indicador de carga. Entonces envolveremos todo en él, un bloque try catch. Ahora, probemos unas formas súper raras. Dot, dot regístrate así. Y aquí para el correo electrónico tenemos que escribir controlador de correo electrónico, no texto. Y para la contraseña, contraseña controlador nodo texto. Y después de esto, lo haremos solo para messenger, snack bar. Éxito. Para automatización. Correo electrónico enviado, color de fondo, colores, verde oscuro. Y esto puede ser const. Y supongo que esto te espera. Tenemos días de dominio en prensa Sync. Después de esto nos enviaremos datos. Registrarse cargando es igual a false. Eso es. Ahora bien, y si hay un agregado esos cuidadosos mensajeros no de contextos que muestran contras de snack bar. Snack bar x ¿ nos registraremos falló? N color de fondo. El color es rojo. A y tenemos que volver a establecer destinado a falso, es decir apuntarse. La carga es igual a false. Entonces aquí primero estamos tratando de inscribir mi tiempo, dado nosotros, dado a nosotros por Superbus. Y luego estamos mostrando snack bar. Si está confirmado o si lo es, si hay alguno agregado, entonces también estamos mostrando el snack bar. Recuerda, Superbus por defecto, habilita la verificación de correo electrónico, lo que significa que al usar autenticación Superbus con esta configuración activada, tus usuarios deben verificar su dirección de correo electrónico para que las cuentas se activen . puedes deshabilitarlo yendo a la opción Configuración en la sección de autenticación. Ahora, tenemos este método de registro, regresa simplemente, escribamos ese inicio de sesión también. Y después de eso, vamos a decir. De igual manera. Para la funcionalidad de inicio de sesión. Este es el índice básico que es súper maneras, no arte, no decir en contraseña débil así. Pero este es este índice. Aquí tenemos que dar correo electrónico y tenemos que dar contraseña. Esta es una sintaxis. Nuestro inicio de sesión. Vamos a hacerlo. Vamos a tener este botón elevado aquí. Sí. Haz que se hunda. Ese es el botón Iniciar sesión. Después neto. cosas serán similares como antes que nada, verificaremos si la carga de inicio de sesión es verdadera. Después const center niño. Fresco. Indicador de progreso. Y después de eso, haremos como comprar una ligasa. Nuevamente, copia también. Por qué perder el tiempo. De aquí a aquí. Copiemos todo. Me alojé aquí dentro. Y ahora vamos a ver comprobar todo. Dirá. Y en carga. De igual manera, esto será la firma, el inicio de sesión. Entonces esto se dirá, en peso. Otras cosas. Entonces decimos y no requerimos esto ya que irá directamente al interior de la página principal. Pero aquí sólo tenemos que iniciar sesión. Y eso es todo. Entonces esto está hecho y espero que funcione. Hemos escrito con éxito el registro así como la funcionalidad. En el siguiente video, probaremos el funcionamiento de estas funciones y también el diseño ahora. Gracias. 7. Funcionalidad de cierre: Hola, es hora de que probemos la funcionalidad. Escribamos correo electrónico y contraseña 12345 y hagamos clic en Inscribirse. Ver correo electrónico de éxito, centavo de confirmación. Entonces ahora tenemos que ir a esa dirección de Gmail y dar click en conformación. Vamos a Gmail n. cuando vas a la sección de autenticación y recargas. Ver, tenemos este correo aquí y está escribiendo para su verificación. Y aquí, simplemente, tienes que hacer clic en el Z-disc, confirmar tu correo electrónico. Y ahora no va a hacer nada. Pero si vamos a recargar la sección de autenticación, vea que se complete la verificación. Ahora bien, si vamos ya tenemos el correo electrónico y la contraseña ahí. Ya que no hemos dicho ese estado se eliminan, esos podemos probar directamente asignando funcionalidad. Vamos a darle clic y ver. Se abre la página principal. Entonces podrías estar pensando, no estamos navegando después de registrarse, iniciar sesión. Es decir, aquí tenemos este letrero. No estamos navegando. Pero si vamos al punto principal, archivo punto, aquí, estamos escuchando el cambio de estado Art. Y es por eso que automáticamente nos envía a la página principal. Ahora, en la página principal, tengamos un sencillo botón para implementar ese cierre de sesión también. Ir a la página principal. Aquí. Vamos más importantes NANDA superautopistas materiales de NANDA. Y ahora estoy directamente en la app, pero voy a tener un botón. Acciones. Entonces puedo abotonar. Yo puedo ser, no puedo cerrar la sesión esta. Hazlo const. Y para implementar en prensa primero BAA, una instancia supervisada. La base de clientes de baterías es igual a la instancia de punto de Bobby. ¿Bien? Esa es la sintaxis. Aquí. No puede ser const. Ahora a la sintaxis para psi nada vuelve a ser muy sencillo. Relacionar superautopistas, no, no cerrar sesión. Eso es. Este es el único llamado silencio. Ahora, después de guardarlo, si voy a la aplicación y hago clic aquí, ese es ese botón de cierre de sesión, debería redirigirnos a la página de inicio. Es la página de inicio, digamos C. Ahora estamos siendo redirigidos a la página de inicio de sesión. Por lo tanto, nuestra funcionalidad de registro, inicio de sesión y cierre de sesión funcionan perfectamente. En el siguiente video, aprenderemos sobre un concepto conocido como deep-linking. Gracias. 8. Integración de enlaces profundos: Hola, bienvenido de nuevo. En este video, trabajaremos en esa integración de deep link en nuestra app. Entonces tenemos la autenticación de contraseña de correo electrónico funcionando. Vamos a configurar deep links para que los usuarios que hayan iniciado sesión a través de magic link o externos o no, es decir, Google o Facebook puedan volver a la app a la que tendrás que ir a tu cuenta de supervisores, es decir Dashboard. Después haga clic en la autenticación. Entonces puedo hacer clic en la configuración de URL. Aquí encontrarás esto estabiliza, redirigir, URLs, URLs que los proveedores impares están autorizados a redirigir. Después de la autenticación. Simplemente haga clic en Agregar URL y en el punto io derecho. Súper formas en que mi aplicación luego dos puntos doble slash login. Encuentro retroceder, eso es todo. Y luego haga clic en Agregar dominio. Mira, tenemos esta URL de redirección aquí. Puedes cambiar el nombre de esta aplicación my flutter y esta devolución de llamada de inicio de sesión. Pero intenté cambiar esta cosa que es io punto Superbus y me estaba dando agregar un rato redirigiendo. Entonces si quieres, puedes probarlo tú mismo dando diferentes nombres diferentes. Ahora, el siguiente paso para el deep linking es que tenemos que agregar algo de código. En la carpeta Android e iOS. Simplemente puedes ir a la documentación de Superbus y leer sobre la configuración de la reproducción C. Hemos agregado esta URL de redirección aquí, están usando Quickstart más plano. Cambié el nombre después de eso para Android, agregué la fuente de aplicaciones de Android y AndroidManifest.xml. Así que vamos ahí. Fuente de la aplicación Android significa AndroidManifest.xml. Y debajo de este IntentFilter, tenemos que copiar esta cosa. Bien, solo copia la del medio. Ve ahí. Y arriba aquí esa es la actividad de cierre. Sólo pegarlo. Aquí, cambia ese esquema. Esa es tu recarga mi app. Y el host es el mismo, eso es login callback. Hemos regresado, bien. Lo que no tenemos que hacer nada. Ahora para iOS. Tenemos que hacer estos cambios. Esa es la clave. Sólo hay que copiar esta cosa por encima de la caja final. Vamos a la carpeta de iOS. Entonces. Ejecute nuestro archivo info.plist. Aquí. En esta posición. Sólo pegarlo. Y nuevamente, cambia esta cadena aquí. Esa es mi app de lote. Eso es. Periodo. Después de estos cambios, simplemente detenga su aplicación. Asegúrate de guardar todo y luego ejecutarlo de nuevo para que esos cambios se reflejen en la aplicación. Entonces eso es todo para ese vínculo profundo. En el siguiente video, trabajaremos sobre cómo implementar el inicio de sesión de Google en nuestra aplicación. Gracias. 9. Configurar Google Oauth: Hola, para habilitar la autenticación de Google en nuestro proyecto. Primero, tenemos que configurar Google Art y obtener esas credenciales. Así que simplemente abre tu navegador, ve a cloud.google.com, entonces ya has iniciado sesión por defecto. Si no, solo inicia sesión con su cuenta de Google después de eso, haga clic en Consola. Ahora, ya tengo este proyecto, pero quizá no lo veas. Puede que veas aquí como seleccionar el proyecto. Después haga clic aquí. Después haz clic en Crear Nuevo Proyecto en la parte superior. Simplemente llamado el proyecto, voy a escribir su inundación. El bulbo es. Bien. Después haga clic en Crear. Está creando. Ahora como puedes ver, simplemente selecciona el proyecto recién creado. Ahora, puedes ver aquí estás trabajando en Florida. Entonces la pobreza es el siguiente paso que tenemos que hacer es crear las claves para nuestro proyecto. En la barra de búsqueda. Aquí, simplemente escriba o AUD. Haga clic en la pantalla de consentimiento. Después seleccione esa opción externa del tipo de usuario. Simplemente laboratorio externo. Haga clic en Crear. Entonces simplemente llena este formulario. Yo solo diré que se trata de correo electrónico de soporte de proveedores. No tengo ningún logo. Dominio. Simplemente aquí también. Supongo que nada más es obligatorio. Haga clic en Guardar y continuar. Ahora, lo siguiente que tienes que hacer es conseguir encontrar tu URL de devolución de llamada. Por lo que no tenemos que llenar los alcances y los usuarios de OwlTest en este momento, simplemente vaya al panel de control de Here Supervisor. Aquí. Haga clic en la opción de configuración del proyecto, luego seleccione la opción API. Ahora aquí puedes ver la URL del proyecto. Dale a éste, solo cópialo. Y luego otra vez ir a la Consola de Google. Haga clic en las credenciales. Esta opción. Bien, sí, luego haga clic en Crear Credenciales para elegir el ID de cliente de OT. Ahora, tipo de aplicación voy a estar simplemente eligiendo aplicación web. Ya que tenemos Android, iOS, y reunión web. Ahora, el nombre estará borroso. Super cliente web. Entonces esto es importante en la redirección autorizada, URI. Primera base, esta es la que copiaste del tablero súper base. Entonces al final, recuerda agregar estas líneas que es slash ahd dot v1 dot callback. Esta cosa, simplemente hay que recordarlo. Y luego hay que escribir estas líneas para que se redirija a nuestra app. Y luego simplemente haz clic en Crear. Después de eso, obtendremos las credenciales. Copia y pega los valores aquí porque los necesitarás más adelante. Después de eso, simplemente vaya a la autenticación. Entonces Bobby es porque ahora estamos y vamos a usar esas credenciales aquí. Haga clic en los proveedores, luego busque Google. Y puedes ver que está pidiendo un ID de cliente y secreto de cliente. Eso es. Y verlo redirigir URL como slash v1 slash callback. Ahora copia este ID de cliente. Estado aquí. De nuevo, copia el estado Secreto del Cliente aquí, y da clic en Guardar. Eso es. Hemos completado todos los pasos y configurado con éxito el inicio de sesión de Google para nuestro proyecto. En el siguiente video, trabajaremos tanto en la interfaz de usuario como en la implementación. Gracias. 10. Haz sesión de Google: Ahora es el momento. Como todo está hecho, implementamos el inicio de sesión de Google en nuestro laboratorio de flutter. Primero, vamos a crear el botón en la página de inicio. Después de este botón de registro. Simplemente la fila. Entonces tenemos hijos. Y que niños. Algún acantilado lo primero que tendremos es la región expandida. Y dentro de esta región expandida, tendremos un divisor. Vamos a tener. Como siempre, puedes cambiar la interfaz de usuario según la tuya. Para mí, esto no es un tutorial sobre una interfaz de usuario muy buena, nada de eso. conjuntos de genes que son infantiles leerán el texto. Y luego otra vez, tengo este dicho en expansión, solo quiero esta cosa. Pero el usuario sabe que o puede iniciar sesión con su correo electrónico o puede usar directamente se iniciará sesión. Aquí. Sólo puedes darle una const. Y voy a quitar el divisor anterior. Éste. Si quieres, puedes quedártelo. Yo sólo quiero este divisor aquí. Y ahora. Después de esta fila, luego dramaturgo, contorno, botón, icono y prensa. Sólo mantenlo así. Etiqueta. Deberíamos entonces d mu con Google. Después en el icono, voy a tener imagen punto red. Simplemente estoy usando una imagen de red aquí. Yo sólo quería que fuera muy simple. Y también la altura de esa imagen va a estar haciendo D. Y simplemente Google cualquier imagen. Entonces el logotipo de Google transparente. Y simplemente voy a copiar esta dirección de imagen y pegarla aquí. Guárdalo. Mira, se ve decente. Ahora, para implementar la funcionalidad de inicio de sesión de Google. Primero, vamos a crear un nuevo botón. Eso no es botón que es un booleano. Iniciar sesión en Google. Cargando se llama el falso, así. Entonces ve a este botón de esquema y aquí simplemente escribe si el inicio de sesión de Google es verdadero, entonces como de costumbre, show es indicador de progreso circular. Y viendo que ya está en el on-premise, conviértalo en un fregadero. Y ahora vamos a escribir el código. Lo primero que haremos lo haremos es establecer estado. carga de inicio de sesión de Google es igual a true. Entonces tenemos este bloque try and catch. Esta es una sintaxis, sintaxis para Google. Iniciar sesión. Enseguida. Superautopistas que bailan arte firman ancho, así. Bien. En ese proveedor, simplemente escriba proveedor. Ver que tienes mucho proveedor. Voy a usar Google. Entonces ellos importando lo importante es el camino directo a aquí. Tenemos que hacer primero esta comprobación. Eso es k es web, esta. Entonces en la parte superior habrá un importante punto de cimentación, punto. Es decir, si es web que simplemente no lo hagas, es decir, no lo escribas. Rls. Utilice el uso de la URL de redirección, que es io punto. Scoop siempre. Mi aleteo, mi app más plana. Iniciar sesión, devolución de llamada, así. Esto es, este fue nuestro escrito que acabo de recordar en Redirigir URL orden profundamente y esas cosas. Este es el único código adquirido después de eso, simplemente en ese arrastre, eso es catch block, ¿ verdad? Andamios. Mensajero de contexto, no show snack, contenido de snack bar. Lo siguiente arriba, así. Si lo desea, puede cambiar el color de fondo es L colores, acento rojo oscuro. Y establecer estado. inicio de sesión de Google es igual a falso. Tenemos código redundante. Es hora de que probemos. Si voy y si voy a nuestra autenticación y usuarios, aquí, simplemente eliminaré a este usuario porque usaré el sesión de Google con el mismo nombre de usuario. Ahora. Vamos a probarlo. Todo se guarda. Sí. Sigamos con Google. Se trata de abrir una cuenta. Sí. Yo lo elegiré. Debería haber leído dirigido. Veamos por qué. Aquí. Supongo que tenemos el inicio de sesión de Google, pero no fue redirigido. Tiene que haber algún problema aquí. Ver, debió haber sido reelecto aquí. K Phi reinicia aquí, no pasará nada. Simplemente ve y elimina a este usuario. Y en los arrendamientos proporcionar una configuración de URL. Veamos qué pasa si elimino este host local en la UE direcciones URL de redireccionamiento directo. Veamos. Mi conjetura. Esta es la correcta. Sólo voy a golpear de nuevo al venado. Guárdalo. Bien, intentémoslo otra vez. Ir a continuar con Google. Y ver. Supongo que no pudiste entender lo que fue redirigido a nuestra app. Pero yo yacía ahí estaba este tema. Acabo de quitar ese host local que localizas de las URL del redactor. Y ahora mismo todo está bien. Está funcionando muy bien. Puedes ver que Google está ahí? Bueno, sí, eso es todo. Por lo que también se completa nuestra indicación. Espero que hayan disfrutado. En el siguiente módulo, aprenderemos sobre cómo usar base de datos en súper base así como flutter en cola. 11. Trabajar en la interfaz de usuario cruda: Hola, bienvenidos de nuevo a un video muy nuevo. Y ahora es el momento de comenzar a aprender sobre bases de datos en Superbus. Superbus proporciona una interfaz de usuario basada en la web que nos permite administrar e interactuar fácilmente con nuestra base de datos relacional. Esta interfaz proporciona una variedad de características para crear y modificar tablas administrando datos y realizando consultas SQL. Entonces aquí puedes ver este editor SQL solo tienes que ir allí. El caso está en supervisar, que definir sus tablas y columnas con anticipación porque puede comenzar antes comenzar a insertar datos en ellas. Esto se debe a que Superbus se construye sobre la secuencia Postgres, que es un sistema de gestión de bases de datos relacionales. Y requiere de un esquema predefinido para poder almacenar datos. Entonces aquí, simplemente vaya allá, vaya a este editor SQL. O si vamos a la base de datos también vemos aquí, tenemos lo mismo, tabla nueva. Simplemente haz clic en nueva tabla y ahora dale una mesa, un nombre. Lo nombraré tareas pendientes. Ahora, desmarcaré esta seguridad a nivel de fila por ahora y habilitaré en tiempo real. Porque obviamente, también aprenderemos sobre cómo usar datos en tiempo real. Ahora, a continuación puedes ver que hay dos columnas predefinidas. Eso es id y crea un creado en. Id es real. Genere ID automáticamente y verifique que este primario sea. Ahora aquí. Simplemente haga clic en Agregar columna. Entonces. Además escribiré título y le daré texto. Dicho esto. Y el segundo escribirá ID de usuario porque obviamente también tenemos que almacenar al usuario. Y aquí lo voy a usar. Lo siguiente es que también puedes usarlo como teaser. Pero supervisado devuelve esa variable de usuario o el ID de usuario como una cadena. Por eso estoy usando string. Y más adelante, tenemos que hacer algunos cambios, o se puede decir convertir también, que lo haremos esa vez. Entonces tenemos la columna, tenemos el nombre y lo hará en tiempo real y luego pulsamos en Guardar. Oh Kay. Y si voy a la mesa, bueno editor también, mira tenemos nuestra mesa. Es perder. También. Estoy usando este nuevo emulador. Es decir, he conectado mi dispositivo real porque antes Android Studio estaba muy rezagado. Por eso. Antes de avanzar hacia el aprendizaje de las operaciones de crud, primero trabajemos en algunas porciones de UI. Crear nuevo archivo dentro del directorio de páginas. Después juega bien. Crear página, punto, punto y punto, punto. ¿Bien? Entonces dentro de la página Crear el papá simplemente importa material, luego mátalo. Se quedaron llenos de nombres rígidos crear página. Entonces lo primero que haremos, como siempre, es tener un booleano que está excluyendo es igual a falso. Y vamos a crear se necesita todo controlador porque obviamente si estamos creando algo, habrá un siguiente campo involucrado. Y lo voy a nombrar Título. El controlador es igual a x controlador de edición. Así. Ahora, simplemente devuelva una barra de andamio. Yo compro bonos. A continuación, cree datos. Después en el cuerpo añadiendo vínculos rígidos y percepciones que 15 y ese niño tienen una columna. Tengamos ese argumento de niños. Y digamos X3. Y también ya que solo uno textos fecha de lanzamiento, Por eso no estoy usando este formulario y voy a dejar que este formulario de texto falle clave foránea. De nuevo, es realmente sencillo. Al igual que la declaración del controlador Dell, Const , entrada, declaración, int x. El título y el borde. Vamos a darle un borde es un contorno en borde de arranque. K. Después de eso TextField. Dale un poco de espaciamiento con la ayuda de su caja de tamaño. Yo, luego botón elevado, Crear y hacerlo const. Bien. Tendremos esta página de creación y definitivamente la veremos en nuestro dispositivo. Pero primero, creemos también nuestra página de edición. Esto similar a crear página, pero la única diferencia es que estamos aceptando datos y asignando los datos. Controlador de edición de texto. Simplemente ve aquí. Material de importación. Página de edición rígida y con estado. Aquí. Ese constructor vamos a aceptar dos cosas. Cadena final, data, int final, id. y entonces simplemente lo aceptaremos como lo hace editado este conjunto de datos. Eso es. Ahora, como siempre, lo mismo. Booleano está cargando es igual a false. Controlador de edición. Controller va a hacer el controlador de edición x así. Y ahora en el estado init, lo que vamos a hacer es que lo haremos como diciendo que les hice valor de datos. Ese token enfriador, escoria, rígido, pequeño w, rígido, no ningún dato como este. Ahora, después de esto, vamos a nuestra página Crear y simplemente copiar este andamio. Andamio. Nosotros tenemos aquí. Ahora. Se agregarán datos. Ellos van a controlador está ahí. Esta será una fecha. Esta es una fecha. Sólo estoy pensando. ¿Qué podemos hacer? Bien, hagámoslo aquí así. Si está cargando es igual a true. Si la carga es verdadera, perdón, equilibrado, centro, Jane, indicador de progreso circular. O si no tengo una columna. Con esa columna, digamos niños que se quedan en las aceras. Peso, doble punto infinito, altura. Pero yo solo estoy creando el botón de actualización aquí. Nada mucho. Es como simplemente darle el ancho completo. Botón elevado al presionar. Y niño se irá al día siguiente. Así. Dentro de esta columna. Eso es después de que la caja de tamaño le dará algo de espaciado con la ayuda de otra caja de tamaño. Yo entonces, y luego un divisor. Y por último, otro botón sólo para ese fin de borrar. Para ese usuario solo puede eliminar de esta página. Const. Yo puedo, puedo empezar a borrar. Esta etiqueta puede ser const. Siguiente, Eliminar. Y así estilo. Vamos a darle pero Dan estilo, fondo color, mi TDL, estado, propiedad, punto. Este otro código tienes que recordar esto no lo hago yo. Y guárdala. En palabras sencillas. La única diferencia entre las dos páginas que tenemos un botón de borrar también aquí. Sólo guarda todo. Si quieres echar un vistazo a esa página simplemente. Bien, vamos a main.out. Y en lugar de páginas de inicio, envíala para crear página y guardar. Ver, esta es nuestra página Crear. Y si hacemos Editar página, y está pidiendo dos argumentos, cadena y entero. Encadena y sé hola. entero puede ser dos. Si lo guardo. Y página de pago. Ver, este halo ya se devuelve aquí porque lo estamos asignando en el estado init. Y esta actualización está tomando toda la pantalla. Entonces tenemos este pequeño divisor. Este es el botón de borrar. Se ve decente. Nuevamente, cambiémoslo a anterior. Esa es la página principal. Entonces eso es todo. En el siguiente video trabajaremos en la IU de Inicio, así como cómo crear, cómo implementar esa funcionalidad de creación, funcionalidad . Y Q. 12. Implementación de la funcionalidad de crear: Hola. Ahora tenemos lista para crear página y editar página. Es momento de trabajar en la página principal y crear botones para navegar a otras páginas, así como trabajar en el cuerpo del conjunto. Muy raro vamos a buscar y mostrar que los datos creados. Así que ve a la página principal. Aquí. Vamos a darle un título ahí dentro, pero sólo voy a escribir. Por cierto es entonces dotar muy superior. Vamos a importar, crear página, importar, editar página. Empecemos a trabajar en el cuerpo aquí. Y eliminaremos n. usaremos un generador de puntos de vista de lista. Espero que conozcas todos estos widgets porque estos son de nuevo los fundamentos de Flutter. Yo **** arma. Y ahora mismo sólo estoy mostrando algunos datos ficticio. Y más adelante reemplazaremos esos datos de los datos que provengan de ellos. Superbus, constructor de elementos, texto, índice, cadena y datos son iguales a los datos ficticio. Y el número índice. Mostraremos estas cadenas de datos. Después devuelva el texto de estilo de lista. Datos, luego arrastrando. Vamos a tener un botón de icono. Y el icono tendrá const. Yo puedo, puedo empezar un anuncio aquí, va a ser puedo empezar a editar. Y vamos a darle un color, colores, rojo. Y en el on-premise, naveguemos. Eso es navigator dot push. En cubiertas. En ese ruidoso dentro de mi diseño de página TBL habrá texto y lo enviaremos a la página de edición. Editar datos simplemente no es variable de datos e ideas que indexan. Estos son de nuevo solo ficticio. Y lo siguiente que tenemos que hacer es el botón creativo de acción flotante. Botón de acción flotante. Niño. Const, puedo, puedo mocos , agrego en mama. Y a partir de esto ya terminamos. Navegaremos hasta el puente de creación. Navega su punto, empuja. Mi página diaria, página de diseño aquí. Eso es. Vamos a guardarlo y echa un vistazo a la aplicación. Mira, ahora mismo se ve muy decente. Sin duda estos son datos ficticio, pero es muy sencillo simplemente reemplazarlo. Así que como ya tenemos la interfaz de usuario lista, es hora de que trabajemos en aprender que cred las operaciones, comenzando por crear nuestros datos de inserción en Superbus. Así que simplemente ve a la página Crear. Primero. Te voy a decir algo de sintaxis. Para insertar un registro, la sintaxis es muy sencilla. Tenemos que escribir que es instancia de superautopistas, que esta instancia de cliente. Entonces de, de nos lleva. ¿Qué es un nombre de tabla donde se van a insertar datos? ¿Aquí? Simplemente, solo por ejemplo tenemos usuarios o puedes decir que tenemos las tareas pendientes. Entonces el comando es sencillo, es decir insertar, insertar. Y esta zona. Este es un segundo argumento que toma datos en forma de mapa, nuestro par de valores clave como este. Supongamos que tenemos entonces algún valor, el valor medio, luego fecha, luego valor. Así. Esta es la sintaxis para insertar. Y supongamos que desea insertar varios registros a la vez. Entonces simplemente inserte mencionándolos. En un anuncio como este. Entonces de manera similar, habrá apretado, habrá fecha de entrega de valor como esta. Así es como podemos insertar múltiples registros a la vez. Y ahora, supongamos que ha insertado este valor y quiere que se vaya a buscar de inmediato. Para eso, lo que podamos hacer, podemos usar una variable que es theta es igual a esperar, así. Y al final, simplemente añadir punto select. Aquí. Se buscará los datos insertados. Es decir, obtendremos la respuesta en el método anterior que está directamente con esperar y sin usar el select, devuelve null como respuesta. Eso es. Eso es. Entonces lo tenemos. Hemos entendido cómo insertar datos. Ahora es el momento de implementar esa funcionalidad de creación. Lo peor, vamos a crear una instancia de supervisión que esta base de sopa es igual para supervisar esa instancia start client. Entonces vamos a crear una función futura. Insertar datos. Así. Lo primero que haremos es establecer la carga a través. Después envolveremos el código en un bloque try catch. Aquí. Lo primero que requerimos es obtener el ID de usuario. Y esto lo podemos obtener del método art que es Superbus, ese art actual user dot ID. Entonces ahora está diciendo que puede ser nulo. Pero como sabemos que el usuario ya está autenticado, tendremos este operador porque sabemos con certeza que habrá un valor. Ahora escribamos esa sintaxis. Es de inserción de punto todos. N. El valor será dy del, del controlador punto txt ID de usuario. ¿Vamos a usar esa idea? Bien, aquí. Después de hacer esto, fue mi error. Y entonces simplemente navegaré y estallaré. Eso es navegar, puerta al pop. Y ahora hagamos esa captura. Sólo para fines de depuración, traeré datos. Inserción de datos. Días de agradecimiento. Establece el estado está cargando es igual a false. Y cuero cabelludo para messenger no mostrar contenido de snack bar. Entonces las cosas salieron mal. Pierna esta cueva. En eso disponer mi turno. Permite disponer que le digo al controlador punto disponer, supervisar punto disponer. Entonces hay sodio, no hay pérdida de memoria. Aquí. Simplemente haga el uso ternario al igual que const, Center, cooler, indicador de progreso. Y el Calder local. Inserta datos así. Eso es. Ahora vamos a probar esa funcionalidad. Si hago clic en sí. Y ahora si solo escribo Barbies y hago clic en Crear, entonces él, entonces, fue el que navegó que se llamaba pop. Entonces vayamos a la base de datos y la actualicemos. Verás, teníamos los datos aprendidos supervisados, tenemos el ID de usuario. Por lo que insertar datos está funcionando perfectamente. En el siguiente video, aprenderemos sobre cómo obtener estos datos y mostrarlos en nuestra app. Gracias. 13. Implementar funcionalidad de lectura: Dado que hemos insertado datos con éxito, ahora aprenderemos a buscar esos datos. Por lo tanto, basado en energía nos proporciona un método selecto para obtener datos de una tabla. Simplemente vaya a la página principal. Simplemente escribiré el índice para seleccionar datos. Y aquí es muy sencillo. Es súper formas del nombre de la tabla se supone que perder y decir izquierda. Entonces este es el método que usaremos. Esto va a buscar todos los registros de ese día hará que pierdas. También por defecto. Por lo que basado en el poder devolverá un máximo de mil filas. Obviamente son muchos datos. Pero si exiges más, esta configuración también se puede cambiar. Además, esta sintaxis devolverá todas las columnas. Eso es supongamos nombre para abordar la edad. Pero si quieres, pero ¿y si requerimos solo columna específica? Dice que sólo el nombre de todos los registros. Entonces aquí simplemente escribiré aquí incluso en el selecto. Por lo que sólo devolverá la columna del título. Eso es. Estos, estos dos hay que recordar. Es una sintaxis muy básica. Ahora, escribamos una función para obtener datos. Será un futuro, y al final devolverá una lista. Vamos a llamarlo los datos leídos, y será un sumidero. Es muy sencillo. Simplemente escribe. El resultado final es igual a esperar. Superautopistas de tareas pendientes. No seleccionar ese conjunto y devolver ese resultado. Nada elegante. Ahora como es un futuro en el cuerpo, usaremos un futuro constructor. En primer lugar, simplemente voy a cortar esto porque lo vamos a pegar. El futuro será el futuro. Entonces tiene dos propiedades. Futuros serán leídos, datos y constructor. Nos da contexto, así como una instantánea del fregadero. Es decir, estos son los datos que provienen de la base soma. Ahora aquí lo haremos en primer lugar, si snapshot dot tiene sumador, primer lugar, vamos a escribir si algo anda mal, centro de retorno child, snapshot dot, dot dos streams. Simplemente escribe esto directamente. Aquí. Voy a devolver un indicador de progreso circular infantil const center. Por eso está en el estado de carga que está tratando de buscar. Tendremos un indicador de carga en esa pantalla. ¿Y qué pasa si snapshot tiene datos? Nuevamente, esta sintaxis viene de. El futuro no se regenerará. Esta sintaxis no está muy lejos. Si la instantánea tiene datos, supongamos que el supervisor ha devuelto algo, ¿de acuerdo? Y no hay datos insertados. En ese caso. Simplemente muestro un rígido donde es retorno y donde está escrito. Sin datos, cada etiqueta como esta. Y si la longitud es mayor que cero, entonces devuelve una lista. Ver punto n aquí. El recuento de artículos será instantánea, datos de puntos, longitud de punto. Esa es la cantidad que vienen. Simplemente crea esa cantidad de widgets. Y el artículo aprenderá. Da contextos e índice. Índice que es. Y ahora aquí voy a devolver esta lista ver voluntad, ¿de acuerdo? Le devolveré el artículo. Dentro de ese constructor de artículos. Lo primero es que voy a tener una variable llamada var data, snapshot data y ese índice. Entonces recuerdas que está en el mapa. Este es un tipo de datos de mapa. Ahora no necesito estos datos ficticios. El recuento de artículos estará estará bien. Supongo que he cometido este error aquí. Tengo que hacer vista de lista eliminaré solo esto. Veamos qué datos hay ahí. Ahora supongo que todo está bien. El nombre de la columna es title. Y lo que estamos enviando es el, eso es un índice. Será id solo ID, no el ID de usuario. Solo recuerda, porque id es el ID de fila que queremos agregar y es único. El ID de usuario será el mismo para todos sus datos. ¿Kay? A ver si hay, si hay algún error o todo está funcionando a la perfección. Aprende a supervisar, viene de la base de datos. Y también había un indicador de carga. Entonces, finalmente, somos capaces de crear así como los datos. En el siguiente video, conoceremos algunas cosas más a la hora de buscar datos. 14. Filtros y modificadores: Hola. En este video, aprenderemos a filtrar nuestros datos. Entonces nuestra aplicación obtiene todos los datos. Pero en la mayor parte de la situación del mundo real, solo querríamos que el usuario leyera sus propios datos. Nos permite devolver solo filas que coincidan con ciertas condiciones. Y también los filtros se pueden usar con cualquier otro método como seleccionar, actualizar o eliminar también. Esas cosas las realizaremos más adelante. Ahora, vamos a leer o entender algunos filtros en él. Este primero aquí vamos a entender es igual a éste, obtiene todas las filas cuyo valor en esa columna indicada coincide exactamente con el valor especificado. Simplemente. Esto entonces así, eso es súper maneras de. Supongamos que tenemos esta tabla llamada users. Entonces aquí seleccionaremos, esto buscará todos los usuarios. Pero si leemos.eq, es igual. Y eso es una columna de nombre debe ser igual a este valor. Por lo que va a buscar en plomo ese usuario específico. Y este nombre es el nombre de la columna del corredor de la muerte. Y este es el valor que debe ser igual. Entonces esto es igual a filtrar ND. Recuerda esto igual a, bueno, usamos mucho tiempo. De igual manera, no tenemos igual a filtrar también. Obtiene filas cuyo valor en esa columna indicada no coincide, coincide con este valor especificado. Entonces aquí podemos preguntar, supongamos que esta es una sintaxis de los usuarios punto y E, q nada igual, digamos aquí, nombre, no igual a. Realmente ayuda. Entonces, aparte de esa fila en particular, va a buscar todo. En ocasiones puede requerir, depende de su aplicación. Entonces tenemos genial ahí. Entonces filter buscará todas las filas cuyo valor en esa columna indicada sea mayor que el valor especificado. Entonces suponga que quiere todos los usuarios cuya edad sea mayor a 18 años. Entonces la sintaxis es así. De los usuarios. Seleccione lo anterior. Creo que se me olvidó seleccionar declaración aquí. Seleccione. Y éste. Seleccionamos no GT mayor que el nombre de columna ¿envejeceremos? El valor es 18, Así que el valor de esas filas no estaría entrando en 18. Y otros campos que es mayor que son iguales. Para todas las filas cuyo valor en esa columna de fecha de permanencia sea mayor o igual que los valores especificados. Entonces solo, por ejemplo, de los usuarios seleccionan.gt. Supongamos que hay una columna de seguidores y simplemente traen u obtienen sus usuarios cuyos seguidores son mayores a 10,000, impares y mayores o iguales a 10,000 muertes. De igual manera, tenemos menos de, eso es LTE menor o igual a? Yo sólo me deslizaré aquí. Menos que como este d n menor que igual. Similarmente como LTE. Simplemente puedes entenderlo con el mismo ejemplo. Entonces unos cuantos más. Es decir, la columna coincide con un patrón. Así que aquí buscar todas las filas cuyo valor subestimado columna coincide con el suministrado por turno. Y recuerda que es sensible a mayúsculas y minúsculas. Entonces este caso envía a Dave, lo escribiremos como súper formas para que los usuarios seleccionen. Como aquí. Escribiremos la columna de nombre y ¿cuál es ese patrón? Oponerse. Debería tener lago, el borde e sub tenía ese nombre. La roca, va a buscar ese nombre. Espero que hayas entendido con este ejemplo. Y de manera similar, tenemos columna coincide con un caso, un caso insensible a mayúsculas y minúsculas. Si patrón. Aquí va a ser agradable separarse. Los usuarios seleccionan. Yo, como aquí es insensible. Si lo escribiste en mayúsculas inferiores, entonces también traerá esa misma cosa. Como si solo dijeras EL en la inferior, no es una mayúscula, entonces también traerá esta fila. Así. Hay más, pero te diré el último. Esta columna en está en la ADA, está en la matriz. Entonces recupera todas las filas cuyo valor en esa columna se encuentra ya sea en la lista de valores especificada. Es como que super puede comenzar desde los usuarios, seleccionar y luego NO EN. Y subrayado. Entonces se encuentra el estado ya sea debajo de ahí. Entonces, ya sea que ese valor esté fuera de línea o en línea o fuera de línea, Lo mismo en línea o fuera de línea. Si alguno de estos valores está presente, entonces tráelo. De igual manera, hay, hay pocos sub más, como columna contiene, cada elemento contenido por filtro de valor, coinciden al menos con una condición. Usted tiene. Estas cosas. Se puede leer. Puedes leer sobre otros en la documentación oficial. Ahora mismo, nuestro enfoque estará más en igual dos. Y luego tenemos modificadores. Hay trabajo a nivel de fila. Nos permiten devolver filas que coincidan con ciertas condiciones sin cambiar la forma de las filas. Los modificadores son todo lo que no se ajusta a esa definición, lo que nos permite cambiar el formato de esa respuesta. Es decir, límites ascendentes, descendentes y todo este tipo de cosas. Recuerde, los modificadores deben especificarse después del filtro. Es decir, si hay algún filtro después de ese punto modificadores. Y vamos, vamos a entender modificador. Aquí. Simplemente cambia el orden de respuesta. Es súper formas, no de los usuarios. Seleccione. Aquí, agregaremos la columna de ID de pedido de punto como envío. El envío no debería ser falso. Entonces, por defecto, ascendente es cierto. Podemos hacerlo falso. Y entonces vendrá en orden descendente. Y entonces tenemos límite ese modificador de consulta. Limita de la cantidad de datos que provienen. Usuarios. Seleccione límite. Entonces trayendo uno nuevo dato, o supongamos que quieres terminarlo como análisis como este. Está bien así. puede entender que es como unos cuantos más. Recuperar la consulta como una fila y todas, pero esas no son necesariamente, estas dos son necesarias por ahora. Entonces es momento de aplicar lo que hemos aprendido ahora, alrededor de tres docenas de modificadores. Anteriormente en nuestra aplicación, estamos recuperando todo el doblaje, pero ahora usando un filtro, obtendremos solo los datos cargados por un usuario en particular que se autentiquen. Además, cambiaremos el orden y mostraremos lo último muerto el top. Entonces primero escribamos maestro. Y uno más. Tratemos de entender dónde podrías estar pensando por qué no se está mostrando porque en este momento tenemos que refrescarlo porque no es en tiempo real. Ver, ahora, después de reiniciar, nos está mostrando los tres datos. Ahora aquí estamos en el futuro. Aquí en la función futura, simplemente después de los puntos seleccionar punto derecho igual. El nombre de la columna es ID de usuario. Y el ID de usuario debe ser igual a súper autopistas byways. El Id de usuario actual, así, y el pedido deben ser ID. Ascendente es igual a falso. Ahora, si lo guardo, ha cambiado. Ahora. Tenemos todos los datos más recientes en la parte superior. Espero que hoy hayas aprendido mucho. En el siguiente video, trabajaremos en la funcionalidad en tiempo real en cola. 15. Implementar la base de datos en tiempo real: Hola. Ahora podemos agregar datos, pero el usuario tiene que reiniciar su pantalla para reflejar los cambios. No es una buena experiencia. Entonces aprenderemos a usar streams en lugar de futuros para poder mostrar actualizaciones en tiempo real. Entonces, ¿qué es la sintaxis primero Vamos a mostrarte alguna sintaxis que es la base de datos en tiempo real. O puedes usar directamente que ellos supervisen. Punto de ahí vamos a nombre es usuario, supongamos entonces stream, stream. Y recuerda que stream toma como argumento una lista de columnas de clave primaria. Por lo que es necesario primaria E, y simplemente escribir ID. Bien, aquí. Entonces escucha. Y dentro de esa escucha, nos dará una lista de datos y podrás hacer lo que quieras con esos datos. Haz algo, bien, aquí, dentro, dentro de ti, puedes hacer algo. Pero, ¿y si quieres escuchar usando stream builder? Entonces, usando stream builder, puedes asignarlo directamente aquí, así. Supongamos arroyo, hay un arroyo ahí. Vamos a recortar. El argumento está ahí. Y aquí puedes simplemente escribir superautopistas que de los usuarios fluyen. Eso es aquí como de costumbre, clave primaria. En este caso capital. Simplemente, no quiero meterme. Esta es la sintaxis. Usaremos esta sintaxis porque estamos usando StringBuilder. Si quieres escuchar directamente el supuesto en el estado init así también, entonces puedes implementar lo anterior estos to15 línea. Lo primero que tienes que hacer es sin duda que podemos escribir directamente aquí. Pero solo voy a hacer que sea estado completamente rígido. Y aquí voy a escribir una variable stream y lead porque voy a asignar su valor en cada estado. Y tiene esta lista de valor dinámico. Y solo escribiremos read stream así. Y luego en el estado init, voy a hacer leer stream es igual a supervisar dot forum. Para perder corriente. Ver clave primaria ahí preguntando, voy a escribir identificación. Entonces punto igual columna es ID de usuario. Y el valor será supervisado o no el ID de usuario actual. Y de manera similar tenemos columna de filtro modificador. ¿Nos identificaremos ascendiendo falso? Eso es. Tenemos esta cadena. Y ahora sólo vamos a cambiar esto a tres milímetros. Esta será stream y ésta será leída stream. Así. Eso es. Simplemente reinicie. Ahora, vamos a comprobar si está funcionando o no. Ahora bien, si phi sine n, masa derecha, ¿qué queda? Bien, tuve este problema con las claves físicas. Esto no es un error, es solo una palabra clave tampoco. Nada más. Simplemente lo haremos así y haremos clic en Crear. Entonces vea, ocho se actualizó automáticamente ya que estamos usando streams antes, tuvimos que actualizar o reiniciar la aplicación. Obviamente, esto es más fácil de usar. Y la mayoría de las aplicaciones requerirán aplicaciones mensajería de stream escoria o algo por el estilo, notificaciones y todo. Bueno, espero que hayan disfrutado aprendiendo sobre la base de datos en tiempo real. En el siguiente video, trabajaremos en actualizar y eliminar nuestros datos. Gracias. 16. Funcionalidad de actualización y eliminación: Ahora es el momento de que aprendamos a actualizar un dato existente. El supervisor nos proporciona, actualiza mi turno y siempre se debe combinar con filtros. Vamos a editar página. Aquí. Aprendamos sobre la funcionalidad de actualización. Entonces la sintaxis es o bien puede comenzar de inmediato desde el primer día nombre. Supongamos que los usuarios puntean la fecha. Ahora aquí, envía esos datos. Quieres actualizar esto en forma de mapa. Valor clave, es decir nombre. Quiero que cambie a Elon Musk. Y lo siguiente que tienes que escribir este partido, porque aquí agregaremos la condición de qué datos actualizar. Entonces id debe ser igual a diez. Así que actualice los datos. ¿De quién es esta identificación? ¿Impar? Tienes otra sintaxis. Para actualizar. Puede utilizar cualquiera de estos dos usuarios actualizar. Entonces este es el mismo nombre, actualizado a elan Musk. Pero en lugar de match usaremos igual. Eso es. Y aquí será como ID, más tranquilo que no en forma de mapa. Solo recuerda que esta es una diferencia entre las dos sintaxis. Entonces, lo que quiera, use esa D porque podría confundirse más adelante si ve algún código de aplicación y pensará, bien, Aprendimos solo esta palabra clave, cómo se está utilizando esta. Por eso. Ahora simplemente implementa esto en nuestra app. Aquí. Lo primero, contar con un cliente supervisor Función. lo ancho del futuro, no lo hace. No es devolver nada. La sincronización de datos. Aquí voy a escribir si controlador de título punto texto igual a null, entonces si no es igual a null, entonces sólo realizar este estado conjunto. Es la carga es igual a verdadera. Atrapar. En ese seco simplemente de inmediato. Probablemente no sea de artimaña. No actualizar. El valor es del actualizar el valor del título. Del controlador punto texto y coincidencia. Lo que tenemos que igualar. Id. Id es un ID de punto rígido como este. Y después de que esté hecho, simplemente Navigator, no pop. Simplemente no lo vamos a reventar nada. Ya que estamos usando streams, por lo que definitivamente se actualizará en tiempo real. Aquí. Si algo anda mal, es a es igual a falso. Y andamio mensajero de contextos, puntos, show snack bar, escribirá algo salió mal. Y vamos a comprobar si eso es lo que es el encabezado. Ok, guárdala. Y también voy a usar la función de disponer. Ellos hacen controlador punto disponer. Esta es una buena práctica que la soja o menos, no se requiere para este proyecto ficticio. Pero siempre nos gustaría hacer lo mejor. Ahora, dentro de esta actualización, simplemente en el on-premise, asigne el motor, eso es esto, y guárdalo. Probemos la aplicación. Si voy a la tercera que es master flatter. Y juntan aleteo y eso y dan clic en Actualizar. Verás, no pasó nada. A ver si hay algún error. El bulbo es dot todos dot update. Creo que debería haber actualizado. mazos de puntos del controlador de título temprano del Eid coinciden. Veamos nuestros datos. Bien. Tenemos al maestro Florida y Dart aquí. Pero ¿por qué no se actualizó en tiempo real? Si lo refresco, está ahí pero no debería ser el caso. La función de actualización está funcionando. Vamos a intentarlo de nuevo. Actualización. Di bien, ahora está funcionando. No me metí en una falla muy pequeña por error, modifiqué la programación maestra de flirteo y la actualicé. Está funcionando a la perfección. También hemos entendido la función de actualización. Ahora lo único que hay que aprender es cómo eliminar datos de Superbus. Superbus nos proporciona el final de mi tercera también. Es muy sencillo como el método de actualización y se debe combinar con filtros. Y podemos usar ya sea match o igual. Entonces lo que estoy diciendo es que supongamos que tenemos esta funcionalidad retrasada. La sintaxis es sencilla. Super formas de usuarios no retrasados. Y luego asegúrate de tener este partido o igual. Aunque tengo este partido aquí, id es igual a diez, así. Implementemos una funcionalidad de eliminación. Simplemente voy a copiar esto, actualizarlo y pegarlo. Escribiré borrar. No requiero esta declaración si. Digamos que está cargando debe ser verdad. Aquí. Esperar, no debería ser. Eliminar. Se trata de un peso Superbus de todos punto retrasado. Y directamente tenemos este ID de partido. Y vamos a tener, después de eso vamos a hacer pop. O si tienes algún error de hongos, tal vez lo muestren en el snack bar y solo lo asignen en el botón elevado. Datos diarios como este, luego colocar guardarlos. Probemos esto también. Voy a quitar esa primera, pila de mastermind. Ahora se está quitando. Si vamos a nuestra base de datos datos, para datos, si actualizo, habrá tres. Así que hemos entendido con éxito cómo crear, leer, actualizar y eliminar datos. Espero que hayas disfrutado aprendiendo hasta ahora. En el siguiente video, aprenderemos algo nuevo. Prestan una práctica. 17. Activación de la seguridad de nivel de fila: Hola, Bienvenido de nuevo. Hoy aprenderemos sobre un nuevo concepto que es una seguridad a nivel de fila, también conocida como RLS. Rls es una característica de seguridad que nos permite controlar el acceso a filas en una tabla de base en función de la identidad de un usuario o un rol. En Superbus, podemos usar RLS para restringir qué filas de datos puede ver un usuario se modifican en función de reglas predefinidas. Hasta ahora, cualquier persona con la clave API pública tenía acceso a nuestra base de datos. También recuerde que el comportamiento predeterminado después de habilitar la tabla bidireccional de RLS es que comió la cena, niega todo el acceso ya sea que el usuario esté autenticado o no. Hasta que mencionamos nuestras políticas. Cada política se adjunta a una tabla y se ejecuta su política. Cada vez que se accede a una tabla, puedes pensar en ellas como agregar una cláusula where a cada consulta. La tabla puede tener diferentes políticas de IRLS. A lo mejor quieres que se pueda producir alguna mesa , algunas quizá no. Entonces depende de ti a qué mesa quieres dar acceso. Entonces eso es suficiente para los Curie. Vamos a habilitarlo. Vaya al tablero Superbus, vaya a nuestro catión. Entonces puedes ver aquí las políticas. Entonces aquí se menciona RLS está deshabilitado. Así que simplemente haz clic en Habilitar RLS. Oh, bien. Entonces ahora si reiniciamos nuestra app, entonces encontraremos que no hay datos que muestren. A ver, ver no hay datos disponibles. Tenemos que escribir políticas. Y las políticas básicamente nos permiten especificar quién tiene acceso a qué datos y qué acciones se pueden realizar sobre los datos. Tenemos que escribir políticas para todas las operaciones crud. Es decir, crear, leer, actualizar, eliminar. Y es muy sencillo. Haga clic en nueva política en esta tabla de tareas pendientes. Después de eso, obtendrás dos opciones. Vamos a elegir la opción de empezar rápidamente por ahora. Para una opción más avanzada, podrás ver más adelante también. Simplemente haga clic aquí. Entonces. Nos da para las políticas. Pero antes que nada, me gustaría decirles qué políticas quiero tener para esta aplicación. Es decir, para nuestra app todos. Además de esto, los usuarios solo deben acceder o leer sus propios datos. Eso significa que la columna de ID de usuario en súper base debe ser igual a la idea de la persona que está enviando la solicitud. Eso es lo primero. En segundo lugar, todos los usuarios deberían poder crear datos si están autenticados. Entonces cuando, cuando se trata de insertar, insertar, todos están permitidos. Apenas ese día, deben ser autenticados. Y ahora para actualizar o eliminar, los usuarios deberían poder actualizar o eliminar sus propios datos sobre el plomo, es decir, así como así. Leer política. La columna de ID de usuario debe ser igual a la idea de la persona que está enviando la solicitud. Eso es. Ahora, de nuevo, volvamos a esta plantilla. Nos da cuatro opciones. Primero es y leerá el acceso a todos, luego habilitará el acceso de inserción para usuarios autenticados en. Los de hoy permiten un poco de acceso para los usuarios en función de su correo electrónico y 40. Y soldó el acceso de eliminación para los usuarios en función de su ID de usuario. Vamos a utilizar esto, es decir el acceso basado en el usuario que hice esta plantilla vamos a utilizar y modificarlo para nuestra comodidad, simplemente utilice esta plantilla. Ahora. Nos pide cosas. Primero está el nombre de la política. Simplemente escribiré habilitar, leer el acceso para los usuarios basado en el ID de usuario. Entonces. Operación permitida, seleccionaré esta. Y recuerda si puedes hacer, pero no puedes hacer dos cosas. Eso es aquí, sólo uno a la vez. Entonces el target crece, solo déjalo por defecto a todos, ya que obviamente el usuario tiene que ser autenticado. Ahora, usando expresión. Cada uno debería, deberíamos punto ID igual a ID de usuario, ¿de acuerdo? Entonces este ID de usuario es ese nombre de columna, y r dot ID significa la persona que está enviando la solicitud. Ahora bien, si trato de hacer clic en Guardar, entonces está mostrando un sumador fallar al crear la función. El ID impar no existe. No debería ser así. Y también hubo otro error también. Pero espera, lo volveré a hacer. Ver aquí si lo mismo si escribo, leer acceso. Y si acabo de seleccionar esto. Ahora si escribo, reviso, política segura y ahora veo para crear operador no existe. Tú, los UUID van a Tech ya que, ya que hemos mencionado ID de usuario, este valor como texto en supervisado, recuerda es decir, su valor es texto. Entonces, o puedes cambiar ese tipo de columna dos enteros, o hacer este cambio solo para asegurarte de que funcione así. Ahora bien, si hago clic en Revisar y guardar política, la política se guardó con éxito. Por lo tanto, habilite el acceso de lectura para los usuarios basado en el ID de usuario. Veamos si nuestra app está funcionando o no. Ahora, podemos acceder a nuestros propios datos. Hemos logrado. Tienden a leer la política de acceso para nuestra tabla de base de datos. En el siguiente video, simplemente escribiremos la política para insertar, actualizar y eliminar. Y Q. 18. Escribir las políticas de CRUD: Hola. Ahora tenemos que mencionar esa política para insertar. Y para eso, volveremos a ir y dar click en nueva política. Entonces empieza rápidamente. Y aquí elegiremos la plantilla, que es entonces insertaremos el acceso para los usuarios autenticados solo usen esta tabla. Aquí. No tenemos que hacer otra cosa. Después haga clic en Revisar y política segura. Dicho esto, hemos leído, tenemos inserto. Ahora o actualizar. Nuevamente utilizaremos el acceso basado en el ID de usuario, es decir esta plantilla y fecha para los usuarios. Y aquí voy a dar click en actualizar. Nos da otro campo que es, que será el mismo. Y nuevamente, como dije, ya que es string, tengo que convertirlo a UUID y copiarlo y pegarlo aquí. Eso es. Simplemente significa cualquier actualización de los usuarios en función de su ID de usuario. Revisión, política segura. Bien. Entonces ahora para la última, recon nueva política, semanal o retrasada. Ahora es como habilitar el acceso para los usuarios en función de su ID. Usa esta plantilla. Todo está bien. Simplemente éste. Recuerda, este UUID no tienes que escribir si has mencionado la columna, es decir los nombres de fila o la columna como entero no cadena en la base de datos. Eso es. Retrasado K. Haga clic en Revisión y política segura. Entonces tenemos todas las políticas cuando Chen, ¿verdad? Entonces ahora nuestra app funcionará perfectamente bien. seguridad a nivel de fila es algo muy básico, pero muy, muy importante. Espero que hayan entendido que cuando estamos construyendo aplicaciones del mundo real, estas son todas las características, son todas las necesarias. La seguridad es que necesitaremos en nuestra aplicación. Entonces eso es todo. Para este concepto. En el siguiente video empezaremos a trabajar. Así que el almacenamiento basado en el poder, poner en cola. 19. Configuración de almacenamiento: Hola, bienvenido de nuevo. Entonces hemos aprendido sobre bases de datos de autenticación, la seguridad a nivel de la línea. Ahora, finalmente, es el momento de que entendamos cómo usar el almacenamiento en supervisar. En el mundo actual, el contenido es el rey. Luego miras las aplicaciones de redes sociales o el comercio electrónico en todas partes encontrarás estas imágenes y videos. Entonces es el momento. También aprendemos a subir archivos a nuestro almacenamiento. Lo primero que tenemos que hacer es crear un nuevo bucket. Aquí puedes ver bucket es un contenedor en el que se almacenan los archivos. Cada bucket está asociado con una URL única, que se puede utilizar para acceder a los archivos dentro de ellos. Cada bucket puede tener su propio conjunto de permisos, lo que le permite controlar quién puede leer y escribir en él. Al igual que RLS. Cuando subes un archivo a un bucket, se le da automáticamente una URL única que se puede usar para acceder al archivo en cualquier momento. Así que simplemente haz clic en Crear nombre de bucket. Simplemente escribiré imágenes de usuario. Hazlo público para que podamos acceder a él más adelante. Y también vamos a mencionar los valores también, así que no habrá tantos temas. Entonces ahora tenemos este usuario imágenes. Lo que tenemos que escribir políticas también, igual que aprendimos en base de datos sexo y sobre políticas o bucket también, podemos establecer permisos que controlen quién puede leerles y escribirles. ejemplo, obtienes, podrías configurar un bucket al que solo acceder los usuarios autenticados o que esté abierto al público. Yo adicionalmente, puede configurar políticas de violación que eliminen automáticamente los archivos después de un cierto período de tiempo. Ahora, haga clic en nueva política. Tendrás esto simplemente haz clic en nueva política. Entonces usaremos el get started rápidamente. Y nos da cinco opciones. Permitir el acceso a imágenes JPEG en una carpeta pública. Darle acceso solo a su propio nombre de carpeta de nivel superior. Como UID. Dar a los usuarios acceso a una carpeta en plomo a los usuarios autenticados. Dar acceso a una carpeta anidada llamada admin solo a un usuario específico. Dar acceso a f phi a un usuario. Vamos a utilizar dar el acceso a los usuarios sólo a los suyos. Ese es el nombre de carpeta de nivel superior, este UUID, es UID. Usa esta plantilla aquí. En primer lugar, seleccione todo. Aquí. Lo siento. Estoy cometiendo un error muy tonto una y otra vez. Pero lo siguiente , entonces, usuario en salarios, impuestos, los hizo en una verdadera política segura. Entonces lo que significa es que habrá una carpeta creada dentro de este bucket. Es decir, cada usuario tendrá su propia carpeta. Lo entenderás cuando empecemos a subir imágenes. Ahora, también tenemos que instalar un paquete. Vaya a pub.gov y escriba el recogedor de archivos. Yo elijo éste. Simplemente ve y copia una dependencia. Entra en el archivo Pub spec dot YAML. Debajo del punto fluido ENV. Simplemente pega y guarda. Se está tomando un poco de tiempo. Sin embargo, vamos a seguir. Ya está hecho. Si es necesario, puedes reiniciar nuestro stop y ejecutar tu aplicación, pero no creo que sea necesario. Y también para Android no hay configuración. Pero si estás usando un dispositivo iOS, solo puedes ver la documentación aquí como configurarlo. Pero para nuestro dispositivo, esa cosa se adquiere. Entonces, eso es todo. En el siguiente video, comenzaremos a trabajar en la funcionalidad de subida. 20. Implementar la funcionalidad de carga: Hola, Empecemos en la pantalla de subida. Crea un nuevo archivo dentro de las páginas y nombra. Subir. Página punto, punto. Empieza a trabajar en la UA. Insumos materiales de importación, superautopistas, Florida. En tablero. Para ahora crear esta visión completa de estado. Podría simplemente nombrarlo subir, edad. Y ahora becerro como pistolas, Superbus, almacenamiento. Después cuerpo. Por ahora, solo déjalo con el contenedor. Después botón de acción flotante. Botón de acción flotante. Este botón se utilizará para agregar icono de foto. Puedo empezar y un peaje en prensa, solo déjalo por ahora. Y entonces ese mismo top crea un estado para cargar. La descarga es igual a falsa. Ahora, vaya a la página de inicio punto.en la barra AB. Crea un nuevo botón para subir imágenes. Aquí. Voy a tener un botón nuevo como pueda botón en su lugar. Y puedo ser puedo subir archivo. Y debería haberse ido como siempre. Y en on-premise, solo navega, navega por su Bush. Material hacia fuera. Y subir página. Eso es. Vamos a guardarlo. Y echa un vistazo a nuestra app. Sigue ahorrando. Bien, tenemos este ícono. Si hago clic en él, vea, esta es la página de almacenamiento. Ahora es el momento de trabajar en la funcionalidad de carga de imágenes. Supervise nos da función de carga que acepta dos argumentos, era ese nombre de archivo. Y también podemos anidar y mencionar la estructura plegada donde queremos almacenarla en Superbus en ese argumento. segundo argumento es el archivo que queremos subir. Vamos vamos a subir página. Sí, Lo primero en placa, no IO. Entonces crea instancia de Superbus, instancia de cliente, así. Entonces crea una función. Futuro. Subir sincronización de archivos. Ahora publicando lo que haremos es usar la biblioteca del picker de archivos. Archivo es igual a esperar. Por plataforma grande. Los archivos no pick permiten múltiples, múltiples caídas y serán imagen de punto. Usaremos la pestaña Archivo es imagen por ahora, obviamente de la misma manera puedes subir cualquier archivo. Ahora, escribiremos una declaración if para verificar si el usuario ha elegido algún archivo o no. Si el archivo no es nulo, entonces sólo el estado de subir a true. Entonces vamos a tener un bloque try catch. En ese autobus. Es más pesado. Archivo archivo es igual a, tenemos que convertirlo en un objeto archivo, archivo archivos punto primera ruta de punto. Y no sería nulo ya que tenemos el cheque if. Entonces podrías estar preguntando primero al blanco y todo porque nos da la lista de archivos y sabemos que no hemos permitido múltiples, así que solo elige el primer archivo, Eso es todo. Entonces String name es igual a big file, dot files. Nombre del punto. Después carga de cadenas. Subido URN es igual a esperar. Ahora bien esta es la sintaxis súper formas de almacenamiento. No de nuestro nombre de bucket son imágenes de usuario. Entonces aquí, ¿quién es la función de subir? Y está preguntando por murciélago de profundidad. Así que recuerda, tenemos que crear una carpeta con el nombre de ese id de usuario. simplemente re espero que recuerdes que estamos en las políticas que hemos escrito así. El supervisor no es arte, ni ID de usuario actual. Después tener una barra y luego nombre de archivo. Así. Y este es un expediente ya tomado. Ahora si lo deseas, puedes simplemente imprimir la URL cargada. Y entonces solo estoy haciendo set state is loading is equal to false, no es loading, is uploading. Subiendo a Isabelle a false. Y andamiar el mensajero de contextos snack bar que archivo subido correctamente archivo subido. Sexos plenamente. Color de fondo, el color es verde oscuro. Y solo hazlo la constante. Y en esa captura, solo di print. Por ahora está depurando. Y vamos a imprimir anuncio. Establecer estado está cargando archivos. Está subiendo musical a falso. Y de manera similar en andamio, algo salió mal. Eso es. Ahora, K Sí. Eso también es una aplicación de escritorio. Bien. No lo he asignado. Vamos a subir. Nuestro nombre de función es upload file. San es aquí. Ahora bien, si hago clic en el botón, solo estoy pensando ¿cuál es el agregado aquí? Ahora mis datos están ahí, pero también en el Botón Flotante. F a hacer si está subiendo es verdad. Y contras ese objetivo. Indicador de progreso. Guarda todo, inténtalo de nuevo para ver cuál es la excepción de sumador a través de la falta de hockey enchufable, detengamos nuestra aplicación y reiniciemos. Entonces ya inicié mi solicitud. Vamos a probarlo de nuevo. Haga clic en el botón. Ahora su base de suministro está pidiendo, podemos permitir sólo una vez. Luego usa esta imagen y guarda el archivo subido correctamente. Ahora vamos a nuestro panel de control de supervisor. Aquí. Si lo acabo de recargar, verás que tenemos esta imagen de usuario. Y aquí tenemos esta imagen. Y este es el nombre del ID de usuario. Es decir, esta es una carpeta del ID de usuario. Entonces espero que hayan entendido cómo podemos subir imágenes. Simplemente pausar el video y entender nuestro intento de entender el código. Esto es simplemente algo básico. El primero, desde este subir archivo EXE, tipo de datos de deuda, por qué lo hemos convertido en archivo. Entonces tenemos el nombre del archivo, y eso es todo. En el siguiente video, parchearemos las imágenes subidas y Q. 21. Imágenes subidas de Fetch: Hola. Ahora es el momento de que vayamos a buscar las imágenes subidas a Firebase. Podemos usar el método list de la función storage dot bucket para seleccionar Todos los archivos dentro de esa carpeta de él. El método de lista de cubo devuelve una lista de archivos en el bucket, que luego puede iterar para acceder a los archivos individuales. Así que solo por el bien emulando la sintaxis, sintaxis para recuperar imágenes. Es sencillo así. Objeto de archivo de lista final. Resultados. Supongamos aquí un peso. Así que el almacenamiento de puntos de Bobby. A partir de entonces, a partir de imágenes, es decir, este es el nombre del bucket, lista de puntos. ¿Bien? Usted puede simplemente deslizar el nombre del cubo aquí. Nombre del cucharón. Así que recuerda, podemos mencionar el nombre de la carpeta dentro esta lista pasando un argumento llamado Math. Entonces como en nuestro ejemplo también, estamos creando carpetas por ID de usuario. Entonces vamos a usar eso. Vamos a oscurecer y escribir la función def. Crear una nueva función. Mi nombre, consigue mis hallazgos. Lista final. Objeto de archivo. El resultado es igual a esperar Superbus. Superbus nada. Nada H. Nada de la imagen del usuario es una lista oscura. ¿Bien? Entonces este es el aire, pero obviamente hay que mencionar ese nombre de carpeta. Será super res punto punto actual id de usuario . ese nombre de carpeta. Cueva. Ahora, también, solo recuerda que este resultado no devuelve la URL de la imagen. Entonces aquí, lo que quiero decir con eso es esperar. Lista, aunque solo escribiré elemento de barra en resultado, artículo de impresión. Bien, intentemos hacerlo. Veamos, mueve todo desde la consola. Si hago clic, obviamente no he llamado a la función. Yo no lo creo. Aquí tenemos estado init. Bien, pongamos un propósito ficticio. Hagamos el estado init. Obtener mis archivos. Ahora bien, si voy a la página, entonces tenemos instancia de archivo objeto item C. Esto es lo que nos da. ID de bucket, buckets curados, metadatos, nombre así. Pero no nos da la URL de la imagen, así que obtendrás el nombre, puedes obtener el nombre, perdón, id y nombre, así como metadatos también. Entonces si reinicié. Entonces verás tamaño ETag, control de caché. Todo es el anuncio en lugar de la URL de la imagen. Ahora, para eso, supervisar nos da otra función que es obtener la URL pública. Te voy a mostrar cómo. Primero voy a crear una variable vacía, que será lista de cadena. Mis imágenes así. Entonces puede cambiar. En resultado. Tenemos a estas alturas, obtendrá URL es igual a. Ahora aquí. De aquí somos supervisor no es de, no de usuario. Imágenes. Dot get. Veamos qué está pasando. Bien, se me olvidó ese almacenamiento. Que tonta equivocación. Las imágenes de usuario de punto obtienen URL pública. Ver. Ahora nos está pidiendo esa parte de esa barra de imagen que tenemos que hacer. En primer lugar, la carpeta que es tan omnipresente, punto, punto ID de usuario actual. Y también si quieres, puedes usar alguna administración estatal como proveedor y obtener esta idea y todo almacenado ahí. este momento solo lo estoy haciendo de una manera muy sencilla. Y recuerda que obtenemos el nombre de la imagen. Entonces es como el nombre de punto de imagen, así. A partir de esto, obtendremos la URL que se puede utilizar para mostrar innovación. ¿Bien? Y veamos si es el futuro o no. No, no es el futuro. Así que sólo puedo quitar ese peso. Y aquí voy a agregar esta información en la anterior en EMTALA. Lo primero que voy a almacenar también el nombre para que pueda ser usado más adelante para eliminar, eliminar propósito. Y URL va a hacer y obtener la URL así. Y por último, devolveré mis imágenes. Y también si quieres, primero vamos a imprimir si está funcionando o no. Mis imágenes variables. Y veamos, sólo voy a ir otra vez a esa página. Y ver imagen nombre es esto, URL es esto. Entonces eso significa que estamos obteniendo la información. Esta es esa URL pública. Ahora es el momento de que mostráramos que las imágenes en esa interfaz de usuario que está aquí en el cuerpo antes era solo un contenedor. Esto va a ser cambiado. Ahora escribamos futuro constructor. Su silla. Tenemos ese futuro y conseguimos mis archivos. Contexto, una instantánea de sumidero. Instantánea. Ahora bien, si el punto de instantánea tiene datos, entonces haga otra cosa. El retorno es indicador de progreso circular. Indicador. Si la instantánea tiene datos, primero, verifiquemos si. Instantánea. Datos. La longitud del punto es si es igual a cero, es decir, no se carga ninguna imagen. Después devuelven los enlaces, el texto central, no hay etiquetado de imagen. Y si este no es ese caso, entonces regresa. Hagámoslo. Widget. Y recuerda, también puedes usar builder, pero estoy usando otro widget conocido como separado, para que entre todos los elementos, tenga una separación de, es decir, lo tengo dividido como separador. Este es uno de los widgets en desorden. Facturo que está ahí, pero primero escribiré. Separador aprenderá. Cuenta con textos e índice también. Simplemente devolveremos un divisor de const así. Grosor a color. El color es negro oscuro. Así. Después artículo aprenderemos. Nuevamente, lo mismo en el siguiente índice. N. Obtendré el mapa de datos de imagen datos snapshot data index. Sólo estoy almacenando ese valor de mapa aquí de esa lista uno por uno. Y devolver una fila, lo que significa que los elementos sobrantes permanecen accesibles. Y centro Mendota y niños tendrán pudines. Primero es la caja de tamaño. Aquí. Será común. La caja, esto es, esta será la imagen. Sólo le estoy dando la altura. No se expande a todos o menos palos ni tiene algún problema más adelante. Red de puntos de imagen. Ahora aquí, datos de imagen principal, URL, caja, cubierta de punto. Y después de esta caja dimensionada, dentro de esa fila, tendré un botón de icono. Yo puedo ser puedo ceñir borrar colores, rojo, 0, clave. Y voy a quitar este estado init por ahora. Espero que todo trabajemos. Jed es, echemos un vistazo a nuestra aplicación. Estoy dando clic en ese botón y veo que tenemos la imagen que aparece en nuestra app. Simplemente voy a darle un relleno a esta vista de lista. Eso es. Al agregar será const, bordes insertos punto simétrico. Lo que pueden. Entonces así. Mira, esta es nuestra imagen. Espero que todo esté bien. Subamos otra imagen. A ver. Voy a usar este virus. Mira, también tenemos este divisor y tenemos dos imágenes aquí, lo que se ve increíble. También hemos hecho la porción de buscar imágenes. En el siguiente video, trabajaremos en este botón de eliminación. Y luego hemos hecho todo lo necesario para aprender en Superbus. Gracias. 22. Eliminar la funcionalidad de imagen: Hola, bienvenido de nuevo. Así que ahora vamos a trabajar en la funcionalidad de eliminación del almacenamiento. En superautopistas. Tenemos DUS, quita mi tech para eliminar un archivo del bucket. Así que solo escribe la sintaxis para moverte por su deslizamiento muy básico objeto de lista final de deslizamiento muy básico. Por lo que nos devuelve ese archivo eliminado también. Super ways, dots, Storage, bucket, name, dot remove this, remove x and add a parameter with the filenames inside this image, one dot png, like this. Y además, si queremos, podemos mencionar el nombre de la carpeta aquí es un pelo también. En nuestro caso, se hará y ID de usuario. Vamos a crearlo. Aquí. Voy a quitar la huella, será futuro nulo. No quiero devolver nada que sea amplio, eliminar imagen. Y tomará nombre de cadena, ese es el nombre de la imagen. Vamos a escribir el try catch. El bloque de captura. Sí, así es. Súper maneras. Puntos, punto de almacenamiento de imágenes de usuario. Quitar. Sí. Hay que escribir parte. Parte será super a's no son id de usuario actual plus y nombre de la imagen. También puedes usar interpolación de cadenas. Pero ahora mismo, veamos si es trabajo o no. Entonces solo enviaré datos, refrescaré la página para que nuestro futuro muera. Nos muestra las últimas imágenes. Y si hay algún error, entonces contextos, snack bar, simplemente escribir algo, salieron mal. Eso es. Tenemos que usar esta función para llamarla aquí en el botón icono. Como ajo, nombre de la imagen, nombre de la imagen, y será nombre. Sí, le dimos un nombre. Vamos a hacerlo. Vamos a guardarlo y sacar nuestra aplicación. Vamos ahí. Y si hicimos esto supervisamos, si hago clic en él, veo que ahora se está borrando del almacenamiento también. Entonces si lo refresco, a ver, creo que va a ser la película, sí, sólo una imagen es la edición es para. Nuestra funcionalidad de eliminación también está funcionando perfectamente. En palabras simples, tenemos esa aplicación completa, solo ve, recién probada. Por último, si hago esto, entonces simplemente voy a proyectar. Ahora, hagamos clic en Crear. El inserto está funcionando. Entonces tenemos el mundo real. Y si lo cambio a negro, también es obvio que está mal, pero está funcionando. Y luego ir y borrar es también. Haberla eliminado. Esto es lo que las operaciones crud también son arena han aprendido sobre la seguridad a nivel de fila. también. También hemos hecho autenticación. Y otra vez, si voy y lo subo. Entonces como puedes ver, la subida también está funcionando perfectamente. Y sólo voy a cerrar sesión. Así que gracias por ser el Lee y espero verte también en mis futuros cursos. Así que hasta entonces, solo sigue trabajando duro y sigue practicando.