Esto es un resumen. El artículo completo, con todo el código paso a paso, está publicado en el blog de Lean Mind: BLoC Pattern con Flutter.
El BLoC Pattern se presentó en la Dart Conference de 2018 con una idea sencilla: poner una capa intermedia entre las vistas y el modelo, para que el mismo código sirva en las aplicaciones móviles hechas con Flutter y en las aplicaciones web hechas con Angular Dart. Esa capa, el bloc, recibe eventos de la vista, habla con el repositorio o el caso de uso y responde con estados. La vista solo se reconstruye según el estado que le llega.

En el artículo construyo desde cero una pantalla de perfil para verlo funcionar:
- Los cuatro ficheros mínimos: el bloc, la pantalla, los eventos y los estados.
- Los paquetes
flutter_bloc,built_valueybuild_runner, y cómo se generan con ellos los estados inmutables. - Un
InitialStateque lanza elLoadDataEvent, y el paso porLoadingStatehasta llegar aRecoveredDataStatecon los datos del repositorio. - Cómo usa la vista el
BlocBuilderpara pintar un spinner o el nombre según el estado, y por qué pasa a ser unStatefulWidget.
La conclusión es la que resume el patrón: la vista se construye a partir de los estados, y los estados cambian en respuesta a los eventos.
