loadSubtitle method
Load subtitle track
Implementation
Future<void> loadSubtitle(SubtitleTrack track) async {
if (track.url == null) {
throw Exception('Subtitle URL not available');
}
try {
_setState(PlaybackState.loading);
final content = await SubtitleService.fetchSubtitleContent(track.url!);
// Try parsing as WebVTT first, then SRT, then XML (YouTube format)
if (content.startsWith('WEBVTT') ||
(content.contains('-->') && !content.trim().startsWith('<'))) {
_subtitleCues = SubtitleService.parseWebVTT(content);
} else if (content.trim().startsWith('<') || content.contains('<?xml')) {
// YouTube returns XML format subtitles
_subtitleCues = SubtitleService.parseXML(content);
} else {
_subtitleCues = SubtitleService.parseSRT(content);
}
_activeSubtitle = track;
_setState(PlaybackState.ready);
notifyListeners();
} catch (e) {
_setState(PlaybackState.error);
_errorMessage = 'Failed to load subtitle: ${e.toString()}';
notifyListeners();
rethrow;
}
}