import 'package:audioplayers/audioplayers.dart'; import 'package:flutter/foundation.dart'; import '../config/language/language_enum.dart'; // Make sure this path is correct import '../providers/language_provider.dart'; // Make sure this path is correct // An enum to represent specific sound events in your app enum SoundEvent { driverCancelled, driverarriver, } class AudioService { final AudioPlayer _audioPlayer = AudioPlayer(); /// Plays a sound based on the given event and current language. /// It defaults to English if the specific language audio is not found. Future playSound(SoundEvent event) async { print('Playing sound: $event'); // Add this try { final soundPath = _getSoundPath(event); // Set volume to max (1.0) await _audioPlayer.setVolume(1.0); // Play the audio from assets once. await _audioPlayer.play(AssetSource(await soundPath)); } catch (e) { if (kDebugMode) { print("Error playing sound '$event': $e"); } } } /// Determines the correct audio file path based on the event and language. Future _getSoundPath(SoundEvent event) async { // Access the current language from your singleton await languageSingleton.getLanguage(); final langCode = languageSingleton.currentLangCode; // This map links your enum to the actual file paths const Map> soundMap = { SoundEvent.driverCancelled: { Language.en: 'audio/Driver_has_cancel_the_ride_EN.mp3', Language.fr: 'audio/le_chauffer_annuler_la_course_FR.mp3', Language.ar: 'audio/drivercancelrideAR.mp3', }, SoundEvent.driverarriver: { Language.en: 'audio/taxiarriveden.mp3', Language.fr: 'audio/driverarriverFR.mp3', Language.ar: 'audio/driverarriverAr.mp3', }, // SoundEvent.riderCancelled: { // Language.en: 'audio/the_rider_has_cancel_the_ride_EN.mp3', // Language.fr: 'audio/Le_client_a_annuler_la_course_FR.mp3', // }, }; // Logic: Get the path for the current language, or fall back to English. return soundMap[event]?[langCode] ?? soundMap[event]![Language.en]!; } /// Call this when the service is no longer needed to release resources. void dispose() { _audioPlayer.dispose(); } }