getDeviceList method
Lists available video capture devices.
Implementation
@override
Future<List<String>> getDeviceList() async {
// Device labels are only populated once permission has been granted, so
// briefly acquire a stream first (the same approach camera_web uses),
// then stop every track immediately.
await _requestTemporaryStream();
final devices =
(await dom.window.navigator.mediaDevices.enumerateDevices().toDart)
.toDart;
_videoDevices
..clear()
..addAll(devices.where(
(device) => device.kind == 'videoinput' && device.deviceId.isNotEmpty));
final names = <String>[];
for (var i = 0; i < _videoDevices.length; i++) {
final label = _videoDevices[i].label;
names.add(label.isNotEmpty ? label : 'Camera $i');
}
return names;
}