When using the BLoC pattern, everything is a stream of events. A BLoC (which stands for Business LOgic Component) is a layer between any source of data and the user interface that will consume the data. Examples of sources include HTTP data retrieved from a web service, or JSON received from a database.
The BLoC receives streams of data from the source, processes it as required by your business logic, and returns streams of data to its subscribers.
A simple diagram of the role of a BLoC is shown here:
The main reason for using BLoCs is separating the concern of the business logic of your app from the presentation that occurs with your widgets, and it is especially useful when your apps become more complex and need to share state in several different places. The example we will build in this recipe will start from the previous one, and it's very simple, but it can be scaled as needed for bigger apps.