addNavigationSource method
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);
}