import 'package:audioplayers/audioplayers.dart'; import 'package:flutter/foundation.dart'; /// 音频播放服务(对应 Android SoundPoolUtils) /// /// 用 AudioPlayers(Flutter 包)替代 Android 的 SoundPool, /// 提供短音效(订单提示、警告音)的低延迟播放能力。 class AudioService { static final AudioService instance = AudioService._(); AudioService._(); final _player = AudioPlayer(); /// 是否启用声音提醒(用户设置开关) bool enableSound = true; /// 初始化播放源(使用 AssetSource) Future _play(String assetPath, {double volume = 1.0}) async { if (!enableSound) return; try { await _player.stop(); await _player.setReleaseMode(ReleaseMode.stop); await _player.setVolume(volume); await _player.play(AssetSource(assetPath)); } catch (e) { debugPrint('AudioService play failed: $e'); } } /// 新订单到来(救援平台内部订单) Future newInsideOrder() => _play('sounds/new_order_inside.mp3'); /// 新订单(啾啾救援订单) Future newJiuJiuOrder() => _play('sounds/new_order_jiujiu.mp3'); /// 订单被关闭 Future orderClosed() => _play('sounds/order_closed.mp3'); /// 通用警告 Future warning() => _play('sounds/warning.mp3'); /// 自定义音效 Future custom(String assetPath, {double volume = 1.0}) => _play(assetPath, volume: volume); void dispose() { _player.dispose(); } }