lifecycleStream method

Stream<Lifecycle<T>> lifecycleStream({
  1. Map<StreamNode, Stream> streams = const {},
  2. Stream<Lifecycle<T>>? startStream,
})

Implementation

Stream<Lifecycle<T>> lifecycleStream(
    {Map<StreamNode, Stream> streams = const {},
    Stream<Lifecycle<T>>? startStream}) {
  final startStr = startStream ?? Stream<Lifecycle<T>>.empty();
  final emissionFunctions =
      this.whereType<Emission<Lifecycle<T>>>().map((e) => e.call);
  final intervalFunctions = this
      .whereType<Interval<T>>()
      .map((e) => (StreamElement<Lifecycle<T>> t) => e.call(t, streams));

  return startStr.asyncExpandMultipleRecursive(
      emissionFunctions.followedBy(intervalFunctions));
}