loadSubtitle method

Future<void> loadSubtitle(
  1. SubtitleTrack track
)

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