parseRaw method

  1. @override
LyricModel parseRaw(
  1. String mainLyric, {
  2. String? translationLyric,
})
override

解析主歌词,可选传入副歌词文本

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