TextTrackImplWeb constructor

TextTrackImplWeb(
  1. String? id,
  2. int uid,
  3. String? label,
  4. String? language,
  5. String? kind,
  6. String? inBandMetadataTrackDispatchType,
  7. TextTrackReadyState readyState,
  8. TextTrackType type,
  9. Cues cues,
  10. Cues activeCues,
  11. String? source,
  12. bool isForced,
  13. TextTrackMode mode,
  14. THEOplayerTextTrack _nativeTextTrack,
)

Implementation

TextTrackImplWeb(super.id, super.uid, super.label, super.language, super.kind, super.inBandMetadataTrackDispatchType, super.readyState, super.type,
    super.cues, super.activeCues, super.source, super.isForced, super.mode, this._nativeTextTrack) {
  addCueEventListener = allowInterop((TextTrackAddCueEventJS event) {
    var cue = event.cue;
    var flutterCue = CueImplWeb(cue.id, cue.uid, cue.startTime, cue.endTime, jsObjectToJsonString(cue.content) ?? "", cue);
    cues.add(flutterCue);
    dispatchEvent(TextTrackAddCueEvent(track: this, cue: flutterCue));
  });

  removeCueEventListener = allowInterop((TextTrackRemoveCueEventJS event) {
    var cue = event.cue;
    Cue? flutterCue = cues.firstWhereOrNull((item) => item.uid == cue.uid);
    if (flutterCue == null) {
      return;
    }

    cues.remove(flutterCue);
    activeCues.remove(flutterCue);
    dispatchEvent(TextTrackRemoveCueEvent(track: this, cue: flutterCue));
  });

  enterCueEventListener = allowInterop((TextTrackEnterCueEventJS event) {
    var cue = event.cue;

    Cue? flutterCue = cues.firstWhereOrNull((item) => item.uid == cue.uid);
    if (flutterCue == null) {
      return;
    }

    activeCues.add(flutterCue);
    dispatchEvent(TextTrackEnterCueEvent(cue: flutterCue));
  });

  exitCueEventListener = allowInterop((TextTrackExitCueEventJS event) {
    var cue = event.cue;

    Cue? flutterCue = cues.firstWhereOrNull((item) => item.uid == cue.uid);
    if (flutterCue == null) {
      return;
    }

    activeCues.remove(flutterCue);
    dispatchEvent(TextTrackExitCueEvent(cue: flutterCue));
  });

  cueChangeEventListener = allowInterop((TextTrackCueChangeEventJS event) {
    dispatchEvent(TextTrackCueChangeEvent(track: this));
  });

  changeEventListener = allowInterop((TextTrackChangeEventJS event) {
    dispatchEvent(TextTrackChangeEvent(track: this));
  });

  _nativeTextTrack.addEventListener(TextTrackEventTypes.ADDCUE.toLowerCase(), addCueEventListener);
  _nativeTextTrack.addEventListener(TextTrackEventTypes.REMOVECUE.toLowerCase(), removeCueEventListener);
  _nativeTextTrack.addEventListener(TextTrackEventTypes.ENTERCUE.toLowerCase(), enterCueEventListener);
  _nativeTextTrack.addEventListener(TextTrackEventTypes.EXITCUE.toLowerCase(), exitCueEventListener);
  _nativeTextTrack.addEventListener(TextTrackEventTypes.CHANGE.toLowerCase(), changeEventListener);
  _nativeTextTrack.addEventListener(TextTrackEventTypes.CUECHANGE.toLowerCase(), cueChangeEventListener);
}