addNavigationSource method

  1. @protected
StreamSubscription<RouteData> addNavigationSource(
  1. Stream<RouteData> source, {
  2. void onData(
    1. RouteData data
    )?,
  3. void onDone()?,
  4. void onError(
    1. dynamic error
    )?,
})

Adds Stream of RouteData as navigation events source.

Callbacks onData, onDone, onError help to handle source. Returns null if this Bloc was disposed. Returns StreamSubscription that provide possibility to pause, resume or cancel source. Preferable to use this method for aggregation of blocs.

class ConnectionBloc extends Bloc {

  void startCall(Contact contact) async { ... }

  void startChat(Contact contact) async { ... }
}

class ContactsBloc extends Bloc implements ConnectionBloc {
  ContactsBloc(this._connectionBloc) {
     addNavigationSource(_connectionBloc.navigationStream);
  }

  final ConnectionBloc _connectionBloc;

  @override
  void startCall(Contact contact) => _connectionBloc.startCall(contact);

  @override
  void startChat(Contact contact) => _connectionBloc.startChat(contact);

  ...
}

Implementation

@protected
StreamSubscription<RouteData> addNavigationSource(
  Stream<RouteData> source, {
  void Function(RouteData data)? onData,
  void Function()? onDone,
  void Function(dynamic error)? onError,
}) {
  return isDisposed
      ? null
      : _navigationController.addSource(source,
          onData: onData, onDone: onDone, onError: onError);
}