signals_watch/signals_watch library

A production-ready reactive widget for signals_flutter with lifecycle callbacks, debouncing, throttling, error handling, and more.

Features

  • 🔄 Multiple constructor patterns (signal, signals, select, custom)
  • 🎯 Lifecycle callbacks (onInit, onValueUpdated, onAfterBuild, onDispose)
  • ⏱️ Debouncing and throttling
  • 🎛️ Conditional updates (shouldRebuild, shouldNotify)
  • 🐛 Error handling with custom builders
  • ⌛ Loading state support
  • 🔍 Debug tools (including SelectiveSignalsObserver)
  • 🎭 StatelessWidget-friendly

Quick Start

// Create signals (auto-registered)
final counter = SignalsWatch.signal(0);
final searchQuery = SignalsWatch.signal('');

// Basic usage
SignalsWatch<int>.fromSignal(
  counter,
  onValueUpdated: (value) {
    print('Counter: $value');
  },
  builder: (value) => Text('$value'),
);

// With debouncing
SignalsWatch<String>.fromSignal(
  searchQuery,
  debounce: Duration(milliseconds: 300),
  onValueUpdated: (value) => performSearch(value),
  builder: (value) => SearchResults(value),
);

// Debug signals with selective observer
void main() {
  SignalsWatch.initializeSignalsObserver();
  runApp(MyApp());
}

Classes

SignalsWatch<T>
A unified class that bundles:

Extensions

SignalListObserveExtension on List<ReadonlySignal>
Extension on List<ReadonlySignal> to provide fluent observe API for multiple signals.
SignalNotifyExtension on Signal<T>
Extension to add .reset() to signals
SignalObserveExtension on ReadonlySignal<T>
Extension on ReadonlySignal to provide fluent observe API.