SignalHookWidget#
class |
Package: package:signals_hooks
Class: SignalHookWidget#
A premium reactive widget that both supports Flutter Hooks and implicitly tracks and rebuilds on signal changes.
SignalHookWidget establishes a dynamic reactive context directly at the Flutter element layer.
Any signal accessed via .value inside the build method is
implicitly tracked and
subscribed to. At the same time, you can call any hooks (like useFocusNode,
useTextEditingController, etc.)
within build.
This provides the ultimate developer experience, combining the power of implicit, boilerplate-free signal tracking with the rich lifecycle management of Flutter Hooks.
Dual Reactivity Example#
final globalCartCount = signal(0);
class MyDualWidget extends SignalHookWidget {
const MyDualWidget({super.key});
@override
Widget build(BuildContext context) {
// 1. Declare hooks seamlessly:
final controller = useTextEditingController();
final focusNode = useFocusNode();
final localCounter = useSignal(0);
// 2. Implicit tracking of external/global signals:
// No .watch(context) needed! Just accessing .value tracks it.
return Column(
children: [
TextField(controller: controller, focusNode: focusNode),
Text('Global Signal: ${globalCartCount.value}'),
Text('Local Signal: ${localCounter.value}'),
],
);
}
}
Members of SignalHookWidget#
| Member | Type | Signature | Description |
|---|---|---|---|
| SignalHookWidget | constructor |
dart SignalHookWidget({super.key}) |
Constructor for SignalHookWidget. |
| createElement | method |
dart StatelessElement createElement() |
|
| build | method |
dart Widget build(BuildContext context) |
Subclasses override this method to define their widget tree. |
| buildWidget | method |
dart Widget buildWidget(BuildContext context) |
Subclasses override this method instead of build to define their widget tree. |
References#
The SignalHookWidget type is referenced and used in the following pages:
- signals_hooks
- SignalStatefulHookWidget (signals_hooks/widgets)
- SignalHookBuilder (signals_hooks/widgets)
- SignalHookWidget (signals_hooks/widgets)