【问题标题】:Trying to write a permission for camera, microphone and map on flutter尝试在颤振上写相机,麦克风和地图的权限
【发布时间】:2020-07-19 02:00:14
【问题描述】:

尝试在flutter上写摄像头、麦克风和地图的权限代码

这是代码,请问这个代码有什么问题

它在一个可访问的 dart 文件中


class Permissions {
  static Future<bool> cameraAndMicrophonePermissionsGranted() async {
    PermissionStatus cameraPermissionStatus = await _getCameraPermission();
    PermissionStatus microphonePermissionStatus =
        await _getMicrophonePermission();

    if (cameraPermissionStatus == PermissionStatus.granted &&
        microphonePermissionStatus == PermissionStatus.granted) {
      return true;
    } else {
      _handleInvalidPermissions(
          cameraPermissionStatus, microphonePermissionStatus);
      return false;
    }
  }

  static Future<PermissionStatus> _getCameraPermission() async {
    PermissionStatus permission =
        await PermissionHandler().checkPermissionStatus(PermissionGroup.camera);
    if (permission != PermissionStatus.granted &&
        permission != PermissionStatus.disabled) {
      Map<PermissionGroup, PermissionStatus> permissionStatus =
          await PermissionHandler()
              .requestPermissions([PermissionGroup.camera]);
      return permissionStatus[PermissionGroup.camera] ??
          PermissionStatus.unknown;
    } else {
      return permission;
    }
  }

  static Future<PermissionStatus> _getMicrophonePermission() async {
    PermissionStatus permission = await PermissionHandler()
        .checkPermissionStatus(PermissionGroup.microphone);
    if (permission != PermissionStatus.granted &&
        permission != PermissionStatus.disabled) {
      Map<PermissionGroup, PermissionStatus> permissionStatus =
          await PermissionHandler()
              .requestPermissions([PermissionGroup.microphone]);
      return permissionStatus[PermissionGroup.microphone] ??
          PermissionStatus.unknown;
    } else {
      return permission;
    }
  }

  static void _handleInvalidPermissions(
    PermissionStatus cameraPermissionStatus,
    PermissionStatus microphonePermissionStatus,
  ) {
    if (cameraPermissionStatus == PermissionStatus.denied &&
        microphonePermissionStatus == PermissionStatus.denied) {
      throw new PlatformException(
          code: "PERMISSION_DENIED",
          message: "Access to camera and microphone denied",
          details: null);
    } else if (cameraPermissionStatus == PermissionStatus.disabled &&
        microphonePermissionStatus == PermissionStatus.disabled) {
      throw new PlatformException(
          code: "PERMISSION_DISABLED",
          message: "Location data is not available on device",
          details: null);
    }
  }
}

错误是

  1. “Permissions”类中未定义方法“PermissionHandler”
  2. 未定义名称“PermissionGroup”
  3. 在 PermissionStatus 类中没有定义 getter 'disable'
  4. 名称“PermissionGroup”不是类型,因此不能用作类型参数
  5. 未定义名称“已禁用”

这段代码有什么问题?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    自版本

    permission_handler 5.0.0

    新的权限检查和请求方法如下

    Old : await PermissionHandler() .checkPermissionStatus(PermissionGroup.camera) 
    
    New : await Permission.camera.status
    
    Old : (await PermissionHandler() .requestPermissions([PermissionGroup.camera]))[PermissionGroup.camera] 
    
    New : await Permission.camera.request()
    
    Old : await PermissionHandler() .requestPermissions([PermissionGroup.camera, PermissionGroup.storage])) 
    
    New : await [Permission.camera, PermissionGroup.storage].request()
    
    Old : await PermissionHandler() .checkServiceStatus(PermissionGroup.location)   
    
    New : await Permission.location.serviceStatus.isEnabled
    

    【讨论】:

      【解决方案2】:

      您的代码使用permission_handler 3.3.0
      pubspec.yaml 中,您必须指定版本 3.3.0

      dependencies:
        flutter:
          sdk: flutter
        permission_handler: 3.3.0
      

      【讨论】:

      • 谢谢,真的很有帮助
      • 很高兴为您提供帮助。如果对您有帮助,请将其标记为答案。谢谢。
      • 这个“问题”从ver 5.0.0开始所以,你可以将版本限制设置为:permission_handler: 4.4.0+hotfix.4
      猜你喜欢
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 1970-01-01
      相关资源
      最近更新 更多