getAvailableAudioOutputs method
Gets the list of available audio output devices.
Implementation
@override
Future<List<AudioOutputDevice>> getAvailableAudioOutputs() async {
final List<AudioOutputDevice> devices = [];
try {
final mediaDevices = web.window.navigator.mediaDevices;
final jsDevices = await mediaDevices.enumerateDevices().toDart;
final count = jsDevices.length;
for (var i = 0; i < count; i++) {
final device = jsDevices[i];
if (device.kind == 'audiooutput') {
final id = device.deviceId;
final label = device.label.isNotEmpty
? device.label
: 'Audio Output ${devices.length + 1}';
devices.add(
AudioOutputDevice(
id: id,
name: label,
type: AudioOutputType.speaker,
isSelected: devices.isEmpty,
),
);
}
}
} catch (_) {}
if (devices.isEmpty) {
devices.add(
const AudioOutputDevice(
id: 'default',
name: 'Default Audio Output',
type: AudioOutputType.speaker,
isSelected: true,
),
);
}
return devices;
}