获得使用 Flutter 在 iOS 上扫描条形码的权限

Get Permission to Scan Barcodes on iOS with Flutter

我正在使用 qr_code_scanner 扫描我的 Flutter 应用程序中的条形码,它适用于 Android,但是当我尝试扫描 iOS 时 pop-up出现并看起来像:

我正在使用如下所示的描述 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;
      });
    }
  }

这段代码第一次执行成功请求访问摄像头的权限,获得权限后,出现同样的错误。顺序尝试上述函数顶部的打印语句表示权限已授予??


更新 2x 刚刚意识到您可以像在 Android 上一样在 iOS 模拟器中模拟相机。我会在实际设备上尝试并更新。

您可以使用 permission_handler。有了这个,您可以在构建 QRView 之前请求相机许可。当然,您应该在启用相机权限后构建QRView。 我不确定这是否是您问题的正确解决方案,但我认为这将是一个了不起的改进。