init method
初始化
Implementation
@override
Future<void> init() async{
DartVLC.initialize();
_player= Player(id: 1);
_onListener = () {
_player.playbackStream.listen((event) {
if(event.isCompleted){
_playlistFinished.add(event.isCompleted);
}
AudioPlayerState audioPlayerState;
if(_player.playback.isPlaying){
audioPlayerState =AudioPlayerState.play;
_isPlaying.add(_player.playback.isPlaying);
}else {
audioPlayerState = AudioPlayerState.pause;
_isReadPlay = false;
}
_playerState.add(audioPlayerState);
});
_player.generalStream.listen((event) {
_playSpeed.add(event.rate);
_volume.add(event.volume);
});
_player.positionStream.listen((event) {
if(_player.playback.isPlaying){
if(!_isReadPlay){
AudioDataSource audioDataSource = _covertMediaToAudioDataSource(_player.current.media??Media.asset(''));
_onReadyToPlay.add(audioDataSource);
_isReadPlay = true;
}
}
_currentPosition.add(event.position??Duration.zero);
});
_player.bufferingProgressStream.listen((event) {
_isBuffering.add(!(_player.bufferingProgress == 100));
});
_player.currentStream.listen((event) {
if(event.media != null ){
_current.add(
_covertMediaToAudioDataSource(event.media??Media.asset(''))
);
}
});
};
_player.textureId.addListener(_onListener);
}