import 'package:audioplayers/audioplayers.dart'; import 'package:stacked/stacked.dart'; import '../ui/common/helper_functions.dart'; class AudioPlayerService with ListenableServiceMixin { // Player initialization final AudioPlayer _player = AudioPlayer(); AudioPlayer get player => _player; AudioPlayerService() { _player.setReleaseMode(ReleaseMode.stop); } // Streams Stream get positionStream => _player.onPositionChanged; Stream get durationStream => _player.onDurationChanged; // Optional: player state Stream get stateStream => _player.onPlayerStateChanged; Future playUrl(String url) async { final playableUrl = getReadableUrl(url); if (playableUrl == null) { throw Exception("Invalid audio URL"); } await _player.play(UrlSource(playableUrl)); } Future playLocal(String url) async { await _player.play(UrlSource(url)); } Future pause() async => await _player.pause(); Future seek(Duration position) async => await _player.seek(position); }