knob method
Declares a read-write value.
declaration's own value is ignored — what crosses the wire is always
declaration.withValue(read()), so a knob cannot report a value that has
gone stale since it was declared. A feature flag registered by a widget
that has since rebuilt is exactly that case.
Implementation
void knob(
KnobDescriptor declaration, {
required KnobReader read,
required KnobWriter write,
}) {
_knobs[declaration.name] = (declaration, read, write);
_panels._changed();
}