playSoundOnTargetChannels method
Plays the given Sound on one of the specified target channels.
Implementation
int playSoundOnTargetChannels(Sound sound, {List<int>? targetChannels, bool loop = false, double? loopStart, double? loopEnd}) {
if (sound.state != LoadingState.ready || sound.bufferHandle == null) return -1;
if (sound.lastTimePlayed != null) {
final timeSinceLastPlayed = DateTime.now().difference(sound.lastTimePlayed!);
if (timeSinceLastPlayed < sound.retriggerDelay) return -1;
}
var channelId = _backend.obtainFreeChannel(targetChannels);
if (channelId == -1) {
warn("All audio channels are in use. Consider to increase channel count.");
return -1;
}
_backend.playSound(
sound.bufferHandle!,
channel: channelId,
loop: loop,
loopStart: loopStart ?? -1,
loopEnd: loopEnd ?? -1,
);
_channelSounds[channelId] = sound;
sound.lastTimePlayed = DateTime.now();
return channelId;
}