checkCameraPermissionWeb method
Implementation
Future<String> checkCameraPermissionWeb() async {
try {
// Check if mediaDevices API is available
final mediaDevices = web.window.navigator.mediaDevices;
// Try to enumerate devices to check camera availability
try {
final devices = await mediaDevices.enumerateDevices().toDart;
bool hasCamera = false;
for (int i = 0; i < devices.length; i++) {
final device = devices[i];
if (device.kind == 'videoinput') {
hasCamera = true;
break;
}
}
if (!hasCamera) {
return 'unsupported';
}
} catch (e) {
// If enumerateDevices fails, camera might still be available
debugPrint('Error enumerating devices: $e');
}
// Try to check permission status using Permissions API if available
try {
final permissions = web.window.navigator.permissions;
final queryOptions = {'name': 'camera'}.jsify() as JSObject;
final result = await permissions.query(queryOptions).toDart;
final state = result.state;
switch (state) {
case 'granted':
return 'granted';
case 'denied':
return 'denied';
case 'prompt':
return 'denied'; // Not yet requested
default:
return 'denied';
}
} catch (e) {
debugPrint('Error checking camera permission via Permissions API: $e');
}
// Default fallback
return 'denied';
} catch (e) {
debugPrint('Error checking camera permission: $e');
return 'error';
}
}