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