toStream method

Stream<LrcStream> toStream()

Creates a stream for each lyric using their durations

Implementation

Stream<LrcStream> toStream() async* {
  for (var i = 0; i < length; i++) {
    var lineCurrent = this[i];
    var lineNext = (i + 1 < length) ? this[i + 1] : null;
    var durationToNext = (lineNext != null)
        ? Duration(
            milliseconds: lineNext.timestamp.inMilliseconds -
                lineCurrent.timestamp.inMilliseconds)
        : null;
    yield LrcStream(
        duration: durationToNext,
        previous: (i != 0) ? this[i - 1] : null,
        current: lineCurrent,
        next: lineNext,
        position: i,
        length: length - 1);
    if (durationToNext != null) {
      await Future.delayed(durationToNext);
    }
  }
}