LogoSignals.dart
Copy Markdown
rodydavis/signals.dart 999999

SignalHookWidget

A premium reactive **HookWidget** that both supports Flutter Hooks and implicitly tracks and rebuilds on signal changes.

A premium reactive HookWidget 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 buildWidget method is implicitly tracked and subscribed to. At the same time, you can call any hooks (like useSignal, useFocusNode, etc.) within buildWidget.

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 buildWidget(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}'),
      ],
    );
  }
}

Constructors#

View Constructors
SignalHookWidget({super.key})

Constructor for SignalHookWidget.

Methods#

View Methods
Widget buildWidget(BuildContext context)

Subclasses override this method instead of build to define their widget tree.

Widget build(BuildContext context)