EventSinkSignalMixin#
Kind:
class |
Package: package:signals_core
Class: EventSinkSignalMixin#
A mixin that implements the standard EventSink interface for a Signal holding an AsyncState value.
This mixin is designed specifically to interface with Stream consumers or
other asynchronous data producers. It maps add to AsyncState.data(...),
addError to AsyncState.error(...), and close
to disposing the signal.
This mixin only works with signals whose value is of type AsyncState.
Example Usage#
import 'package:signals/signals.dart';
class MyEventSinkSignal extends Signal<AsyncState<int>> with EventSinkSignalMixin<int> {
MyEventSinkSignal(int initialValue) : super(AsyncState.data(initialValue));
}
void main() {
final signal = MyEventSinkSignal(0);
effect(() {
final state = signal.value;
state.map(
data: (val) => print('Data received: $val'),
error: (err, stack) => print('Error occurred: $err'),
loading: () => print('Loading...'),
);
}); // Prints: "Data received: 0"
// Treat it as an EventSink and add data
signal.add(10); // Prints: "Data received: 10"
// Push an error event
signal.addError(Exception('Failure')); // Prints: "Error occurred: Exception: Failure"
// Close/dispose the sink
signal.close();
print('Is disposed: ${signal.disposed}'); // Prints: "Is disposed: true"
}
Once close is called, the signal is disposed. Trying to call add or addError
after closing will result in an exception.
Members of EventSinkSignalMixin#
| Member | Type | Signature | Description |
|---|---|---|---|
| add | method | dart void add(T event) | |
| addError | method | dart void addError(Object error, [StackTrace? stackTrace]) | |
| close | method | dart void close() |
References#
The EventSinkSignalMixin type is referenced and used in the following pages:
- EventSinkSignalMixin (signals_flutter/mixins)
- signals_flutter
- EventSinkSignalMixin (signals_core/mixins)
- signals_core
- EventSinkSignalMixin (signals/mixins)
- signals