我正在使用qr_code_scanner在Flutter应用程序中扫描条形码,并且在Android上运行良好,但是当我尝试扫描iOS时,会出现一个弹出窗口,看起来像:
我正在使用描述Flutter的代码,如下所示:
QRView(
key: qrKey,
onQRViewCreated: (controller) => {
controller.scannedDataStream.listen((code) async {
...
})
})
在我的Info.plist文件中,我具有以下字段:
<key>io.flutter.embedded_views_preview</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>Camera permission is required to scan QR codes.</string>
但是,即使设置了这些设置,我似乎也无法弄清楚如何使用相机。谢谢你的帮助。
更新我跟着@EvgeniyTrubilo建议,并使用permission_handler到请求允许使用下面的代码:
void getCameraPermission() async {
print(await Permission.camera.status); // prints PermissionStatus.granted
var status = await Permission.camera.status;
if (!status.isGranted) {
final result = await Permission.camera.request();
if (result.isGranted) {
setState(() {
canShowQRScanner = true;
});
} else {
Scaffold.of(context).showSnackBar(
SnackBar(content: Text('Please enable camera to scan barcodes')));
Navigator.of(context).pop();
}
} else {
setState(() {
canShowQRScanner = true;
});
}
}
第一次执行此代码时,它成功请求访问摄像机的权限,并且一旦授予权限,就会出现相同的错误。顺序尝试上述函数顶部的print语句表示已授予权限?
Update 2x刚意识到您可以像在Android上一样在iOS模拟器中模拟相机。我将在实际设备上尝试并更新。
您可以使用permission_handler。这样,您可以在构建QRView之前请求相机许可。当然,您应该在启用摄像头许可后构建QRView。我不确定这是否是解决您问题的正确方法,但我认为这将是一个了不起的改进。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句