【问题标题】:Get Permission to Scan Barcodes on iOS with Flutter使用 Flutter 在 iOS 上获得扫描条形码的权限
【发布时间】: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 的权限

标签: ios flutter qr-code


【解决方案1】:

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

【讨论】:

  • 感谢您的回答,我认为这让我更接近问题所在,但我仍然遇到问题,请查看我更新后的问题。
  • 如果你在IOS模拟器上尝试这个,你就错了。因为ios模拟器不支持相机功能。请在实际设备上试用。
猜你喜欢
  • 2023-02-15
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-18
相关资源
最近更新 更多