Dart:我如何为不同的目的使用同一个单例的多个实例?



我有一个类,用于使用audioplayer播放声音我有下面的代码,其中函数clickSound只是播放一个简单的按钮点击声音音频没有任何循环和函数loopSound循环播放音乐。然而,我无法同时播放两者,以防音乐正在播放,我想点击一个按钮。我如何用下面的代码实现这个功能?

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();
}
}

"它本身听起来是相互排斥的。虽然没有什么可以阻止您以不同的名称创建另一个staticinstance,但在您的情况下,您可能需要重新考虑应用程序的架构。例如,你可能想使用你的AudioService的多个实例,而不是一个单例和注入AudioService的必要实例

最新更新