playMedia method
Future playMedia(
- Media? media
)
Implementation
Future playMedia(Media? media) {
if (_current?.url == media?.url) {
return Future.value(true);
}
_current = media;
_videoPlayerController?.pause();
_videoPlayerController?.dispose();
_videoPlayerController = null;
_audioPlayer?.stop();
_audioPlayer?.dispose();
_audioPlayer = null;
this.media?.add(media!);
if (media!.type == MediaType.audio) {
_audioPlayer = audio_player.AudioPlayer();
_audioPlayer?.setPlayerMode(audio_player.PlayerMode.mediaPlayer);
_audioPlayer!
.play(audio_player.UrlSource(media.url!))
.then((value) => notifyListeners());
_audioPlayer?.onPlayerStateChanged.listen((event) {
if (event == audio_player.PlayerState.completed) {
playNext();
}
});
_subscribeToTimeEventsForMedia(media);
} else if (media.type == MediaType.video) {
_videoPlayerController =
VideoPlayerController.networkUrl(Uri.parse(media.url!));
_videoPlayerController!.setVolume(1.0);
_videoPlayerController!.addListener(() {});
return _videoPlayerController!.initialize().then((value) {
_videoPlayerController!.play().then((value) => notifyListeners());
_subscribeToTimeEventsForMedia(media);
});
}
return Future.value(null);
}