getIndexByProgress method
Implementation
int getIndexByProgress(Duration progress) {
final model = lyricNotifier.value;
if (model == null) {
return 0;
}
progress += Duration(milliseconds: _lyricOffset);
int left = 0;
final lines = model.lines;
int right = lines.length - 1;
int result = -1;
while (left <= right) {
int mid = left + ((right - left) >> 1);
if (progress == lines[mid].start) {
return mid;
} else if (progress < lines[mid].start) {
right = mid - 1;
} else {
result = mid;
left = mid + 1;
}
}
return result < 0 ? 0 : result;
}