onStateChanged method
State Change Hook
Logs start/completion. Crossfades typically prevent completed from
firing, but this remains as a safety fallback.
Implementation
@override
void onStateChanged(PlayerState state) {
// Guard: skip logging if no playlist is loaded (e.g., direct playFromSource usage)
if (_currentPlaylist.isEmpty) return;
switch (state) {
case PlayerState.playing:
FiftyAudioLogger.log('[${_currentPlaylist[_index]}] Started');
break;
case PlayerState.completed:
FiftyAudioLogger.log('[${_currentPlaylist[_index]}] Completed');
// Normally handled by crossfade — fallback if ever needed.
break;
default:
// no-op
break;
}
}