【发布时间】:2021-02-25 01:28:11
【问题描述】:
我正在使用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;
});
}
}
第一次执行此代码时,它成功请求访问相机的权限,一旦授予权限,就会出现相同的错误。 Sequential 尝试上述函数顶部的 print 语句说权限被授予??
更新 2 倍 刚刚意识到您可以像在 Android 上一样在 iOS 模拟器中模拟相机。我将在实际设备上尝试并更新。
【问题讨论】:
-
查看下面的答案,你只需一行代码就可以询问 Flutter 的权限