Zero Glue Code. Streamless Reactivity. Pure Hook Composition.

If you’ve built Flutter applications using flutter_hooks, you know how empowering hook-based composition can be. By replacing boilerplate StatefulWidget lifecycles with declarative hooks like useState, useMemoized, and useEffect, Flutter Hooks makes widget code remarkably concise.

However, when developers tried bridging classic flutter_bloc into a HookWidget, friction quickly emerged. Because classic BLoC states are published asynchronously across Stream pipelines, consuming state or reacting to side-effects required either:

Nesting heavy widget wrappers (BlocBuilder, BlocListener, BlocSelector) inside the build() method of a HookWidget.

Depending on third-party, dedicated glue-code packages (such as flutter_hooks_bloc) that wrapped BLoC streams into custom hooks like useBloc, useBlocBuilder, and useBlocListener.