parseRaw method
解析主歌词,可选传入副歌词文本
Implementation
@override
LyricModel parseRaw(String mainLyric, {String? translationLyric}) {
final idTags = <String, String>{};
final lines = <LyricLine>[];
// 提取翻译歌词
var translationMap = extractTranslationMap(translationLyric);
for (var line in mainLyric.split('\n')) {
// 提取标签内容
final tagInfo = _extractTag(line);
if (tagInfo != null) {
final tag = tagInfo;
idTags[tag.tag] = tag.value;
continue;
}
final lineInfo = extractLine(line);
if (lineInfo != null) {
final lrcLine = lineInfo;
for (var duration in lrcLine.durations) {
lines.add(
LyricLine(
start: duration,
text: lrcLine.text,
translation: translationMap[duration.inMilliseconds],
),
);
}
}
}
lines.sort((a, b) => a.start.compareTo(b.start));
return LyricModel(lines: lines, tags: idTags);
}