signaling<I extends Signal, O extends Signal> static method
Creates a signaling Cell that transforms incoming and outgoing signals, or stop outgoing signals.
Parameters:
bind
: Required Cell to bind totransform
: Transformation function for signalsuser
: Optional user datasynapses
: Whether this cell can be linked (default: Linkable.enabled)
Returns a new Cell configured for signal transformation
Example: Transforming an int signal to String signal
// Create a value cell
final value = CollectiveValue<int>(0);
// Create a processor cell
final processor = Cell.signaling<Signal<int>, Signal<String>>(
bind: value,
transform: (signal, _) {
// Check if the signal is less than 5
if (signal.body < 5) {
// If so, stop the signal
return null;
}
// Transform the signal to a string
return Signal<String>('Value is ${signal.body}');
},
);
value.set(2); // This will stop the signal
value.set(6); // This will transform the signal to "6" as String
Implementation
static Cell signaling<I extends Signal, O extends Signal>({
required Cell bind,
required O? Function(I signal, dynamic user) transform,
dynamic user,
Synapses synapses = Synapses.enabled
}) {
return CellSync(
bind: bind,
receptor: Receptor<Cell,I,O>(
transform: ({required Cell cell, required I signal, dynamic user}) => transform(signal, user),
user: user
),
synapses: synapses == Synapses.enabled ? Synapses<O,Cell>() : synapses
);
}