我需要在我的 flutter web 应用程序中使用麦克风。我尝试了以下代码,但只有在我请求时才有效
'camera'
.
final perm = await html.window.navigator.permissions.query({"name": "camera"});
if (perm.state == "denied") {
Scaffold.of(context).showSnackBar(SnackBar(
content: Text("Oops! Camera access denied!"),
backgroundColor: Colors.orangeAccent,
));
return;
}
final stream = await html.window.navigator.getUserMedia(video: true);
试试这个:
PermissionStatus permission = await window.navigator.permissions.query({'name': 'microphone'});
现在您知道您是否获得许可。 如果有权限则授予,如果没有则提示。(如果被阻止则拒绝) 但在提示对话框获取权限的情况下,我使用了一个技巧,我第一次发送请求来获取 UserMedia 并且它显示请求对话框。
await navigator.mediaDevices.getUserMedia(mediaConstraints);
据我所知,浏览器不支持直接发送权限请求,您应该使用一些技巧来显示上面的对话框。
// ignore: avoid_web_libraries_in_flutter
import 'dart:html';
window.navigator.getUserMedia(audio: true,).then(() { // ignore: avoid_print print('microphone and camera accessed'); } as FutureOr Function(MediaStream value));