Más de uno me va a preguntar Fernando por qué se pierde la información conocemos un reloj y esta información
del email y password se pierde por qué.
Bueno no sólo eso se perdería también se perdería el estado del formulario anterior pero bueno digamos
que no nos interesa mucho porque en otra pantalla o servicio específico de aquella pantalla qué podremos
hacer cuando vamos a hacer la demostración.
Si yo toco el otro y lo noten que no es el optimista es un otro y LOTTT para actualizar los cambios
en una pantalla o que se vuelva a redibujar la pantalla actual perdemos la data eso es principalmente
porque si nos vamos a nuestro Main demostrarles nuestro Provider no es más que un widget es un widget
común y corriente.
Entonces cuando sucede un cambio se vuelve a dibujar y al volverse a dibujar realmente lo que hace nuestra
lógica es volver a inicializar el Bloc.
Más de uno va a decir Ah bueno Fernando entonces simplemente cambiamos este Stainless widget por este
widget en el mail vamos a ver si eso funciona tendría sentido.
Honestamente sí tendría sentido con la diferencia de que aquí se va a volver a redibujar también pero
vamos a ver voy a ser mejor pistard para que aplique el cambio porque fue un cambio estructural grande
cambiar mi mi main por un widget.
Entonces vamos a probarlo entonces Fernando arroba gmail.com cualquier correo válido y cualquier contraseña
válida ingreso tenemos los valores todos siguen funcionando protocolos administrar y perdemos la información.
O sea que este mecanismo no nos funcionó o que valía la pena probarlo.
Entonces voy a dejarme como estaba y voy a hacer otro Istar porque bueno para que la aplicación siga
funcionando no porque fue otro cambio estructural pesado lo cierro.
Básicamente el problema se encuentra aquí cuando nosotros estamos llamando.
Este blog está inicialización ahí es donde perdemos la información aquí la estamos perdiendo.
Sería conveniente poder mantener la instancia o los valores que ya tiene el blog.
Si existe información en ese blog o sea implementar un singleton nuevamente yo sé que más de uno va
a decir un montón de trabajo estamos haciendo para algo tan sencillo pero lo que quiero mostrarles a
ustedes con la elaboración de este ejercicio es cómo se implementa y se trabaja con un patrón Block.
Toda nuestra información está centralizada y todos los procesos están independientes a la lógica de
la pantalla.
Toda la información se puede leer de forma global en cualquier punto de la aplicación.
Igual los streams cuando cambian los datos.
Eso en parte es lo que estamos buscando con el patrón blog poder tener centralizada y de forma independiente
la información para resolver el problema.
Entonces voy a implementar mi Provider con un patrón singleton específicamente esta parte del blog es
lo que yo no quiero reiniciar.
Hay varias formas de hacer esto.
La única diferencia o lo único que lo hace un poquito más complicado a diferencia de las otras implementaciones
que ya hemos hecho es que este Provider necesita estos argumentos o sea necesito crearme un singleton
que la primera vez reciba información y la segunda vez se implemente la reutilice.
Eso es tal vez lo único difícil y diferente.
Entonces vamos a cambiar esto un poco este Provider lo voy a comentar porque no quiero hacerlo de esa
manera.
Esta instancia del blog sí se va a ejecutar la primera vez entonces eso está bien.
Tengo que cambiar esto un poco.
Primero voy a crear una propiedad estática Static de tipo Provider que va a ser la instancia instancia
actual pero queda bien instancia.
Esta es la instancia de mi clase ahora voy a crearme el factor constructor.
Ya les explico por qué Factory Provider parentesis abro y cierro llaves.
La idea del Factory es determinar si necesito regresar una nueva instancia de la clase o utilizar esta
existente.
Entonces para eso voy a hacer lo siguiente y si la instancia instancia es igual a NULL avizoró llaves
entonces quiere decir que necesito crear una nueva instancia del provided entonces instancia para ser
igual a new Provider provided.
Pero aquí hay que hacer algo en particular hay algo independiente que hacer acá.
Yo necesito crearme un constructor privado internal para prevenir que se pueda inicializar esta clase
desde afuera internen.
La inicialización de esta clase se va a prevenir mediante un constructor privado que lo vamos a definir
de una vez aunque es exactamente igual a éste que lo voy a colocar aquí abajo y quitar este comentario.
Aquí el Provider va a recibir esos mismos argumentos que son los que anteriormente mandábamos.
Pero voy a poner aquí un bajo Internet.
Estos son los argumentos que yo necesito enviar pero más de uno me va a preguntar y en qué momento vamos
a obtener estos argumentos para mandárselo acá.
Bueno es relativamente de la misma manera este interna al recibir el tipo aquí y el widget tipo chat
también los voy a pedir estoy intentando inicializar la primera vez o cuando lo soy intentando llamar
aquí adentro en el interna.
Recuerden que necesitará estos argumentos que son obligatorios pero como están entre estos llaves eso
es lo que interpreta como que fueran opcionales pero tenemos que enviarlos y aquí voy a decir que el
que iba a ser igual al que recibió como argumento y el Chávez va a ser igual al chaval que estoy recibiendo
como argumento.
Eso es básicamente no se preocupen por eso es que salvé los cambios y nos estamos regresando nada entonces
en el factor de control vamos a regresar la instancia es decir si ya teníamos información en la instancia
regresa a esa instancia si no teníamos información quiere decir que la primera vez que se implementa
y tendríamos que regresar esa nueva esta nueva instancia creada eso sería básicamente todo y vamos a
probar si esto funciona tal vez esto es demasiado para muchas personas y hemos hecho aplicaciones de
muchos tipos pero como les digo estoy tratando de cubrir bastantes áreas con ustedes van a poder encontrar
ejercicios allá afuera o vamos a probarlo.
Si todo sale bien la aplicación debería seguir trabajando.
Fernando Herrera arroba gmail.com voy a escribir acá 1 2 3 4 5 6 7 8 9 para que sea un correo diferente.
Toca ingresar y tengo la información aquí y ahora viene la prueba de fuego.
Si yo hago un Ristar un reloj debería de mantener la instancia.
Ahí está voy a tocarlo nuevamente y ahí se mantuvo.
Voy a grabar los cambios aquí tenía otra cosa y noté que eso también me perduró la información.
Por qué cuando se está intentando redibujar el widget el widget llama este constructor del Provider
en el cual dice ah bueno aquí ya teníamos una instancia y la instancia está cargada.
Retorna a esa misma instancia y en esa instancia ya tenemos esos valores.
De esa manera podemos persistir inclusive con los trilobites pero bueno hasta aquí quería llegar la
sección.
Espero que hayan aprendido bastantes cosas nuevas.
Tal vez ha sido una de las secciones más pesadas porque hay mucha lógica propia de dar mucha lógica
propia o interna de flor.
Pero mi objetivo es darles a ustedes herramientas y el conocimiento para poder ver otros ejercicios
y tomar más referencia que se encuentra en internet o bien en libros u otras documentaciones que ustedes
puedan encontrar sobre flores.
Si más los veo en la siguiente sección.