The followed a bloc-architecture pattern.
All the display logic / filter logic is in the bloc.
Maximum widgets are stateless -> Widgets change when data in the bloc changes not by managing their own states.
Ideally, filtering should be done through local database or api call.
UI polishing.