我有下面的代码,其中函数clickSound只是播放一个简单的按钮点击声音音频,没有任何循环,函数loopSound循环播放音乐。但是我无法同时播放两者,即(例如,如果音乐正在播放,我想点击按钮)。
我如何使用同一个示例来实现它呢?或者我必须创建两个示例并将我的代码从单例模式更改为单例模式?
注意:我使用的是audioplayer包
import 'package:audioplayers/audioplayers.dart';
import 'package:biblequiz/services/preferences.dart';
class AudioService {
AudioPlayer player = AudioPlayer();
static final AudioService instance = AudioService._();
AudioService._() {
this.player.setVolume(1.0);
}
void clickSound() async {
await player.play(AssetSource('sounds/click.mp3'));
}
void loopSound() async {
player.setReleaseMode(ReleaseMode.loop);
await player.play(AssetSource('sounds/music.wav'));
}
void stopLoop() async {
await player.stop();
}
}
1条答案
按热度按时间9udxz4iz1#
只需为您想要播放的每个新声音创建
AudioPlayer
的新示例。audioplayers getting started另外,你的单例并不是完整的dart singleton。如果只是静态方法呢?KISS和YAGNI。