extractLine static method
Implementation
static LrcLine? extractLine(String line) {
final regexp = RegExp(
r'\[(\d{1,}):(\d{2})(?:\.(\d{1,}))?\]',
multiLine: true,
);
final matches = regexp.allMatches(line);
if (matches.isEmpty) return null;
final durations = <Duration>[];
for (var match in matches) {
final minutes = match.group(1);
final seconds = match.group(2);
var milliseconds = match.group(3) ?? '0';
if (milliseconds.length > 3) {
milliseconds = milliseconds.substring(0, 3);
}
Duration duration = Duration(
minutes: int.parse(minutes!),
seconds: int.parse(seconds!),
milliseconds: int.parse(milliseconds.padRight(3, '0')),
);
durations.add(duration);
line = line.replaceAll(match.group(0)!, '');
}
return LrcLine(durations: durations, text: line);
}