87 lines
1.9 KiB
Dart
87 lines
1.9 KiB
Dart
import 'package:audioplayers/audioplayers.dart';
|
|
import 'package:flutter/foundation.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;
|
|
}
|