Files
EM2_ERP/em2rp/lib/services/audio_feedback_service.dart

65 lines
1.9 KiB
Dart

import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:flutter/services.dart';
import 'package:audioplayers/audioplayers.dart';
import 'package:em2rp/utils/debug_log.dart';
/// Service pour émettre des feedbacks sonores lors des interactions
class AudioFeedbackService {
static final AudioPlayer _player = AudioPlayer();
/// Jouer un son de succès
static Future<void> playSuccessBeep() async {
try {
if (kIsWeb) {
// Sur Web, utiliser le chemin absolu
await _player.play(UrlSource('assets/sounds/ok.mp3'));
} else {
// Sur mobile/desktop, utiliser AssetSource
await _player.play(AssetSource('sounds/ok.mp3'));
}
await HapticFeedback.lightImpact();
} catch (e) {
DebugLog.error('[AudioFeedbackService] Error playing success beep', e);
}
}
/// Jouer un son d'erreur
static Future<void> playErrorBeep() async {
try {
if (kIsWeb) {
// Sur Web, utiliser le chemin absolu
await _player.play(UrlSource('assets/sounds/error.mp3'));
} else {
// Sur mobile/desktop, utiliser AssetSource
await _player.play(AssetSource('sounds/error.mp3'));
}
await HapticFeedback.heavyImpact();
} catch (e) {
DebugLog.error('[AudioFeedbackService] Error playing error beep', e);
}
}
/// Jouer une vibration haptique (si disponible)
static Future<void> playHapticFeedback() async {
try {
await HapticFeedback.mediumImpact();
} catch (e) {
DebugLog.error('[AudioFeedbackService] Error playing haptic feedback', e);
}
}
/// Jouer un feedback complet (son + vibration)
static Future<void> playFullFeedback({bool isSuccess = true}) async {
if (isSuccess) {
await playSuccessBeep();
} else {
await playErrorBeep();
}
}
/// Nettoyer les ressources
static Future<void> dispose() async {
await _player.dispose();
}
}