on method
Listens for Messages with the specified name.
Usage example:
// Store subscription in a field
late final StreamSubscription _buttonClickSubscription;
@override
void initState() {
super.initState();
_buttonClickSubscription = messageBus.on('button_click').listen((event) {
// Handle event
});
}
@override
void dispose() {
// Cancel subscription when widget is disposed
_buttonClickSubscription.cancel();
super.dispose();
}
IMPORTANT: Remember to store the returned StreamSubscription and cancel it in your dispose method to avoid memory leaks.
If called without a name parameter, the Stream contains every event passing through this MessageBus.
The returned Stream is a broadcast stream so multiple subscriptions are allowed.
Implementation
Stream<Message> on([String? eventName]) {
if (eventName == null) {
return streamController.stream.cast<Message>();
} else {
return streamController.stream
.where((message) => message is Message && message.name == eventName)
.cast<Message>();
}
}