Nosotros a lo largo del curso hemos estado utilizando una forma de Bloc o un singleton en particular
para poder enviar información a lo largo de toda mi aplicación.
Es una manera de hacerlo pero la forma como lo recomienda Flore es trabajar con él.
Injera y Ted Willet y éste son Willet en lo personal un poquito complicado de entender qué es lo que
así como funciona.
Si nosotros vemos la documentación que se les estoy dejando en Inglaterra junto nos dice que es una
base o sea es un widget base que nos permite de una manera eficiente propagar información abajo de todo
el árbol.
Nuestro árbol de G.M mostrárselos acá en este video de YouTube que también se los dejo en el material
adjunto para que ustedes lo vean.
Lo único malo es que está en inglés y en este caso nos va a permitir a nosotros ese widget poder mandar
información desde el padre o en este caso nuestro descendente mayor a sus hijos y a su vez que sus hijos
puedan notificar a su ascendente en este caso este sería el abuelo y en este caso sería el bisabuelo
pero podrían comunicarse de esta manera.
Entonces cómo podríamos hacer eso.
A lo largo del curso ustedes han visto que con el patrón blog y manejando streams podemos hacerlo de
una manera sencilla pero ahora lo que yo quiero hacer es implementar ese ingente Willett para controlar
mi blog de manera eficiente.
La mala noticia es que es un código un poco extraño.
Vamos a ver por aquí hasta aquí incluso inclusive nos damos un ejemplo aún más exagerado pero funciona
de la misma manera.
Ok es bastante útil pero vamos a ver dónde está el código es un poquito extraño se lo voy a mostrar
por aquí está aquí ok entonces hay que hacer ciertas cosas.
El gerente de Willett nosotros podremos controlar qué información es la que queremos compartir a lo
largo de la aplicación o a lo largo de este Willet particularmente pero se nos pide que hagamos una
sobre escritura de optes no define qué es una función que se encarga de notificar a todos los hijos
cuando sea necesario y cuando sea necesario es cuando hay un cambio y esto es prácticamente lo más difícil
de implementar.
En este video inclusive no queda muy claro cómo implementarlo pero lo vamos a hacer nosotros y seguir
el lineamiento recomendado de flores para trabajar con esta información.
Para eso les voy a pedir que en nuestro proyecto Abramos el mail y recordemos que aquí nuestro mail
si de alguna manera pudiéramos colocar nuestro ingentes Willet acá él es el principal o sería el padre
principal de todos los widgets que se despliegan de mi aplicación es decir este widget de mi login está
dentro del material app y lo que es la otra pantalla del home page también es parte del material app.
En pocas palabras todo todo lo que sigue justo dentro de este material APP van a ser hijos de este gran
árbol de widgets que nosotros tenemos en una aplicación de flor.
Este sería nivel superior o sea arriba de esto ya no hay otro widget entonces aquí sería el lugar ideal
para empezar a implementar.
Pero vamos a comenzar a hacerlo.
Voy a pedir que creemos en la clase blog vamos a crear un nuevo chico llamado provided punto.
Dart enter este punto va a ser mi Jeunet widget personalizado.
Para eso voy a ocupar impor me voy a ocupar el paquete de material porque ahí viene el widget queremos
la clase llamada Provider que recuerden que puede ser cualquier nombre y el proveedor también puede
manejar múltiples instancias de blog.
Puede manejar blogs de diferentes cosas de diferentes partes de mi aplicación o de diferentes objetos
que tengamos ahí.
En fin puede manejar todo un sol en un solo lugar bastante conveniente.
Ahora este Provider es una clase común y corriente que no tienen nada raro hasta el momento pero sí
necesito realizar el optes chutney Orphan y entre otras cosas y crear las instancias que yo necesito
como por ejemplo crear la instancia del blog para manejar en todos los lugares la misma instancia de
la información que yo estoy manejando por este formulario.
Entonces vamos a hacer eso.
Lo primero sería inicializar un block es decir una propiedad llamada blog que va a ser igual al login
login blog parentesis puntico.
Aquí estoy creando mi única o mi primera y única instancia que voy a manejar de mi blog y aquí ahora
voy a extender mi clase Provider extensa de mi internet injerir Ted este de aquí abajo Tapp noten que
el Provider ahora me marcó un error porque todavía no están implementados un par de cosas que son necesarias.
Entonces dejemos el cursor encima contra el punto o como punto iban a crearse el hoverboard que me está
pidiendo el otro es Chuck Norris fight.
Y en este caso es como una condición que dice más o menos así al actualizarse deben notificar a sus
hijos eso en el 99 por ciento de los casos es cierto y se la van a poner quetuvo en muy rara ocasión.
Ustedes no van a querer actualizar eso y podrían mandar alguna condición pero en el 99.9 por ciento
de los casos siempre va a ser truc.
Y aquí viene la parte más extraña.
Cuando nosotros usemos este Provider o cuando estemos utilizando esta información del injerta widget
yo voy a ocupar la instancia de mi login Block es decir que me regrese el Estado como está es el login
blog y para eso es una función un poquito extraña.
Entonces voy a empezar a escribirla ya se las voy a explicar poco a poco entonces empecemos con mi Static
para decir que esto va a ser un método que se llame directamente para retornar el login Block Block
en la misma instancia que yo tengo acá este blog y ese método estático se va a llamar off paréntesis
ya la van a ver funcionando este o va a ser un método que recibe submit context that se llama context
que es el mismo context podrían mentalizarse que es el árbol de widgets todo lo que está ahí adentro
el tema y todas las cosas con lo que sea que esté en su momento en el contexto abro y cierro llaves
esa función va a buscar internamente en este gran árbol de widgets que viene en este contexto va a retornar
a la instancia de este blog en particular.
Pasado en este contexto entonces voy a decir un ratón paréntesis vamos a empezar a barrer dentro del
contexto punto y esa función es rarísima.
Internet from widget of Exact.
O sea que se vaya a buscar en ese contexto cuál es la instancia del Provider que yo tengo definido acá.
Que se vaya a buscar.
En este contexto Provider que ya lo vamos a implementar y esto va a ser conocido as Provider ok.
Y todavía sigue estando mal por qué.
Porque no está regresando algo del tipo lo Blok.
Entonces puedo ponerle aquí punto los block puntico pero esta es una L minúscula porque estoy haciendo
referencia a esta propiedad.
Todo este código en pocas palabras repito va a tomar el contexto que el contexto es aquel árbol grandísimo
de widgets y va a buscar un widget exactamente con el mismo tipo de Provider o sea buscar un provider
me van a decir bueno falando pero esto es una clase normal.
Cómo es que esto se transforma en un widget de dos razones una porque es un Gtech Widget.
Aquí lo estamos haciendo implicito y también nos falta el constructor porque vamos a definir el constructor
Provider parentesis.
Abro y cierro llaves aunque puedo hacerlo de la manera corta y ya lo vamos a implementar ok en este
Provider yo voy a necesitar el KI que no lo hemos trabajado pero el que es un identificador único del
widget coma y luego tendríamos el widget.
O sea lo que sea que ustedes quieran colocar acá puede decir cualquier cosa puede ser un text puede
ser un container o puede ser un material como lo tendríamos nosotros aquí en el que lo que quiero hacer
es insertar dentro de mi Provider dentro de mí gerentes Widget.
Quiero almacenar mi material a más de uno va a decir de Fernando esto está súper complicado pero la
ventaja de todo esto es que ustedes ya lo van a tener escrito y no lo tienen que pensar simplemente
lo van a copiar y lo van a usar.
Y aquí yo tengo que inicializar este injera el widget de la siguiente manera super parentesis el que
recibe ese super va a ser el mismo que yo estoy recibiendo y el Chile va a ser el mismo Chile que estoy
recibiendo como argumento me falta un punto y coma.
Esto es básicamente una implementación de un ingente widget que internamente tiene un blog y aquí ustedes
podrían poner otras instancias de otras variables o propiedades que ustedes quieren manejar de forma
global en su aplicación de la misma manera utilizando este código.
Ok entonces para qué me sirve este Provider.
Bueno voy a regresar a mi main.
Vamos a cambiar esto un poquito y aquí en este widget del Pill que este es el video principal del Main
o de mi app.
Voy a poner aquí Provider provided este providers no existe necesitamos importarlo de nuestro Provider
que no vamos a buscar lo que se me hizo esta formalidad.
Source blog Provider de aquí está parentesis y aquí recibe su chip y aquí es muy parecido a como funcionan
todos los widgets en flor.
Notarán ustedes que Chile y que son los que estoy poniendo en este constructor entonces el kit no hace
falta que lo especificamos pero sí el chip el Chile sería mi material a todo esto pero en este punto
y coma al final y este material es lo que yo tengo que colocar dentro de Chile.
Todo lo demás todo todo queda exactamente igual que voy a grabar los cambios y voy a hacer un ovillo
para asegurarme de que no tengamos ningún problema a la consola.
No hay ningún error perfecto y más yo no voy a decir Bueno Fernando para qué hicimos tanta cosa.
Esta es la forma como floras recomienda que nosotros manipulamos la información o el estado de la misma.
Entonces ahora yo en mi login vamos a ver en la pantalla de login abrirla.
La idea es que ahora en la página del login yo voy a buscar la instancia de ese Provider porque dentro
de ese Provider y tiene la única instancia inicializar ya previamente del blog pero eso lo vamos a utilizar
en el siguiente video en la próxima clase esto que acabamos de hacer ya va a tener más sentido pero
por momentos yo sé que tal vez todo esto fue un poquito en chino pero no se preocupen cuando ustedes
quieran volver a crear un injerta widget simplemente manda copiar todo este código y eso es básicamente
una implementación correcta de un gerente Willett pero los veo en el siguiente video con la continuación
de esta parte.