play method
Implementation
Future<void> play() async {
// Checking if the file is not already playing
if (isPlaying) {
return;
}
// Updating playing state
isPlaying = true;
updateUI();
try {
var completer = Completer<void>();
// Getting file extension
logger.info('Preparing to play $audioPath');
var player = getPlayer();
_currentPlayer = player;
// Registering for audio progress updates
Timer.periodic(const Duration(milliseconds: 200), (t) {
var state = player.state;
if (state != PlayerState.playing) {
logger.debug('Flaging audio as finished');
isPlaying = false;
completer.complete();
secondsPlayed = 0;
t.cancel();
updateUI();
return;
}
// logger.info('Audio progress ($state): ${player.currentPosition}');
secondsPlayed = player.positionInSeconds;
updateUI();
});
// Play
player.play();
logger.debug('Finished playing');
return completer.future;
} finally {
updateUI();
}
}