noir_signals
noir_signals is Noir’s optional companion package for lifecycle hooks and
Signals integration. Its guides, tutorial, and examples are part of this
documentation site. Noir supplies the widgets and rendering; the companion
adds ways to own state and resources and observe reactive models.
Use it when you want hooks in a SignalWidget or SignalBuilder, or when
your app already uses a Signals model. Core StatefulWidget and setState
remain available without the companion.
Set up your app
Follow Installation for the companion dependency setup. Then import the application widgets and the companion surface:
import 'package:noir/noir.dart';
import 'package:noir_signals/noir_signals.dart';Start with Build a task list for a complete app in five runnable lessons, from an empty screen to adding and filtering tasks.
Choose a guide
| Goal | Guide |
|---|---|
| Retain local state, controllers, and effects across builds | Manage state and resources |
| Observe a model owned outside the widget | Show shared state |
| Understand identity and resource disposal | State, identity, and ownership |
| Run the counter, task list, or file search | Companion examples |
Observation is explicit: reading a signal’s .value in a build does not
subscribe the widget by itself. The Signals guide explains which hook or
builder to use and who owns disposal.
Reference contracts
These links open the package’s detailed Markdown contracts in the public GitHub repository, alongside its source:
- Hooks contract — hook ordering, keys, effects, and resource lifetimes.
- Signals contract — observation, ownership, replacement, and deferred disposal.
See API for the package surfaces and available generated reference.