startPlayer method

void startPlayer(
  1. String url, {
  2. bool autoPlay = true,
})

Implementation

void startPlayer(String url, {bool autoPlay = true}) {
  _controller.startPlayer(
    url,
    autoPlay: autoPlay,
    onData: (data) async {
      final Map<String, dynamic> parsedData = Map<String, dynamic>.from(data);
      if (parsedData.containsKey(AppStrings.state)) {
        final value = parsedData[AppStrings.state];
        playeStateStream.add(PlayerState.values[value]);
      } else if (parsedData.containsKey(AppStrings.quality)) {
        final value = parsedData[AppStrings.quality];
        qualityStream.add(value);
        isAutoQualityStream.add(await isAutoQuality());
      } else if (parsedData.containsKey(AppStrings.duration)) {
        final value = parsedData[AppStrings.duration];
        final duration = double.tryParse(value.toString());
        durationStream.add(
          Duration(
            seconds: (duration?.isFinite ?? false) ? duration!.toInt() : 0,
          ),
        );
        getQualities();
      } else if (parsedData.containsKey(AppStrings.syncTime)) {
        final value = parsedData[AppStrings.syncTime];
        syncTimeStream
            .add(Duration(seconds: double.parse(value.toString()).toInt()));
      } else if (parsedData.containsKey(AppStrings.error)) {
        final value = parsedData[AppStrings.error];
        errorStream.add(value);
      }
    },
    onError: (error) {},
  );
  _positionStreamSubs?.cancel();
  _positionStreamSubs = Stream.periodic(
    const Duration(milliseconds: 100),
  ).listen(
    (event) async {
      positionStream.add(await _controller.getPosition());
    },
  );
}