on method

Stream<Message> on([
  1. String? eventName
])

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>();
  }
}