observeLinks method

  1. @override
Stream<DeferredLink> observeLinks()
override

Implementation

@override
Stream<DeferredLink> observeLinks() {
  // Multi-stream so listeners attach to [_controller] synchronously on listen
  // (async* + yield* can miss events emitted in the same turn).
  return Stream<DeferredLink>.multi((listener) {
    if (readyForNavigation &&
        pendingDeferred != null &&
        mode != LinkProcessingMode.webOnly) {
      listener.add(pendingDeferred!);
    }
    final sub = _controller.stream.listen(
      listener.add,
      onError: listener.addError,
      onDone: listener.close,
    );
    listener.onCancel = () {
      sub.cancel();
    };
  });
}