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.