Aleteo. Cómo actualizar su BLoC

Hay muchas bibliotecas que implementan el patrón BLoC. Pero del que voy a hablar es inusual y se llama isolate_bloc.



Como su nombre lo indica, se trata de una especie de bloque inusual, y su peculiaridad es que funciona en un Aislamiento separado (en adelante, aislado) y no ralentiza la IU.



¿Cuál es el problema con un bloque regular?



Además del texto estándar, hay un problema más: funciona en el hilo principal, por lo que las tareas pesadas como analizar json pueden provocar bloqueos en la interfaz de usuario.



Bibliotecas como simple_bloc o cubit pueden ayudar con el primer problema. Desde el segundo, aislar o un envoltorio sobre él, calcular. En principio, esta es una combinación realmente buena que usa mucha gente, pero incluso no resuelve todos los problemas. Por ejemplo, no se puede trabajar con MethodChannel en forma aislada y, en principio, su uso está asociado a inconvenientes y una placa de caldera.



Aislar bloque







Esta biblioteca ayuda a usar el patrón BLoC y resuelve una serie de tareas, como trabajar con aislamientos y MessageChannels. Además, te permite reducir la cantidad de código al escribir el bloque en sí.



¿Cómo usarlo?



Para entender cómo trabajar con esta biblioteca, veamos un ejemplo simple.



A pesar de que traté de describir todo en detalle, algo puede resultar incomprensible, por lo que se supone que ya está familiarizado con el patrón BLoC.



Cualquier proyecto de flutter comienza con un contador, así que también comenzaremos con eso. El primer paso es escribir el bloque en sí.







En la línea 3, creamos una clase CounterBloc que hereda de la clase IsolateBloc. Aquí indicamos el tipo de eventos y estados de nuestro bloque.



En la línea 4, pasamos el estado inicial del contador - 0.



De las líneas 6 a 9, anulamos el método onEventReceived, que se llama cuando se recibe un nuevo evento. State es un getter que devuelve el último estado que envió el bloque a la interfaz de usuario.



En la línea 8, usamos la función emit, que toma el estado y lo envía a la interfaz de usuario.



Ahora necesitas registrar el bloque.



Dado que funciona en un aislado separado, no podemos crearlo directamente. Por lo tanto, debe informar a la biblioteca sobre su existencia mediante la función de registro.







En la línea 5, inicializamos la biblioteca y pasamos una función que se ejecutará en bloques de aislamiento y registro.



En la línea 10, registramos CounterBloc; ahora la biblioteca podrá crearlo a petición nuestra.



¡Solo queda describir la interfaz de usuario!







En la línea 8, creamos un bloque y lo agregamos al árbol de widgets.



En la línea 23 escuchamos el estado del bloque. IsolateBlocBuilder funciona como StreamBuilder, pero puede encontrar el bloque en el árbol de widgets.



De las líneas 31 a 33, usamos el método de extensión isolateBloc <Bloc, State> () para obtener un bloque del contexto y usamos la función add () para agregarle un nuevo evento.



Eso es todo, ¡ahora puedes empezar!



El final



Usando un ejemplo básico, mostré cómo trabajar con esta biblioteca, y para un estudio más detallado, le aconsejo que consulte su página en el github . Allí se describe toda la funcionalidad y hay ejemplos más complejos.



All Articles