Files
wushu/lib/utils/audio_manager.dart
Developer 888363785b 重构
2026-03-31 03:48:14 +08:00

86 lines
1.8 KiB
Dart

import 'package:audioplayers/audioplayers.dart';
import 'package:shared_preferences/shared_preferences.dart';
/// 时间: 2026-03-30
/// 功能: 音频管理类
/// 介绍: 管理应用中的音效播放,包括点击音效、点赞音效等
/// 最新变化: 使用最简单的音频播放方式
class AudioManager {
static AudioManager? _instance;
bool _isInitialized = false;
bool _isMuted = false;
AudioManager._internal();
factory AudioManager() {
_instance ??= AudioManager._internal();
return _instance!;
}
Future<void> init() async {
if (_isInitialized) return;
try {
await _loadSoundSetting();
_isInitialized = true;
} catch (e) {
// 初始化失败
}
}
/// 加载保存的声音设置
Future<void> _loadSoundSetting() async {
try {
final prefs = await SharedPreferences.getInstance();
bool soundEnabled = prefs.getBool('sound_enabled') ?? false;
_isMuted = !soundEnabled;
} catch (e) {
// 加载设置失败
}
}
/// 播放点击音效
void playClickSound() {
_playSound('audios/deep.mp3');
}
/// 播放点赞音效
void playLikeSound() {
_playSound('audios/deep.mp3');
}
/// 播放下一条音效
void playNextSound() {
_playSound('audios/deep.mp3');
}
/// 播放音频
void _playSound(String assetPath) {
if (_isMuted) return;
_playSoundAsync(assetPath);
}
/// 异步播放音频
void _playSoundAsync(String assetPath) async {
try {
final player = AudioPlayer();
await player.play(AssetSource(assetPath));
player.onPlayerComplete.listen((_) {
player.dispose();
});
} catch (e) {
// 播放失败
}
}
/// 设置静音状态
void setMuted(bool muted) {
_isMuted = muted;
}
/// 获取静音状态
bool get isMuted => _isMuted;
}