Interface for extensions that can observe and react to graph events.
Extensions are purely additive - they observe events and provide additional capabilities without modifying core behavior.
Lifecycle
- Extension is created
- attach is called with the controller reference
- onEvent is called for each graph event
- detach is called when the extension is removed
Example Implementation
class LoggingExtension<T> implements NodeFlowExtension<T> {
NodeFlowController<T>? _controller;
@override
String get id => 'logging';
@override
void attach(NodeFlowController<T> controller) {
_controller = controller;
print('Logging extension attached');
}
@override
void detach() {
_controller = null;
print('Logging extension detached');
}
@override
void onEvent(GraphEvent event) {
print('Event: $event');
}
}
Usage
final controller = NodeFlowController<MyData>();
controller.addExtension(LoggingExtension<MyData>());
Properties
Methods
-
attach(
covariant dynamic controller) → void - Called when the extension is attached to a controller.
-
detach(
) → void - Called when the extension is detached from the controller.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
onEvent(
GraphEvent event) → void - Called when a graph event occurs.
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited