You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将旧版Permission Handler代码适配至最新版本(附代码修改求助)

适配最新版Permission Handler的代码修改方案

我来帮你把这段旧代码调整成适配最新版Permission Handler的版本,先给你直接上修改后的可运行代码,再拆解关键的改动点:

if (Platform.isAndroid) {
  // 检查当前存储权限状态
  PermissionStatus permissionStorage = await Permission.storage.status;
  if (permissionStorage != PermissionStatus.granted) {
    // 请求存储权限
    PermissionStatus permissionStatus = await Permission.storage.request();
    permissionStorage = permissionStatus;
    if (permissionStorage != PermissionStatus.granted) {
      print('没有存储权限,无法保存图片');
      return;
    }
  }
}

关键改动说明:

  • 移除了PermissionHandler实例:新版插件不再需要创建PermissionHandler()对象,直接通过Permission类的静态枚举(比如Permission.storage)来操作权限。
  • 简化权限检查逻辑:旧版的checkPermissionStatus(PermissionGroup.storage)被替换成Permission.storage.status,直接await就能获取当前权限状态,代码更简洁。
  • 权限请求方式优化:旧版requestPermission([PermissionGroup.storage])会返回一个Map,需要手动提取对应权限的状态;新版直接调用Permission.storage.request()就能单独请求该权限,返回值就是该权限的PermissionStatus,省去了Map取值的步骤。
  • 修正枚举拼写错误:旧代码里的PermissionStatus.unknow是拼写错误,新版正确的枚举值是PermissionStatus.unknown(不过上面的代码里不需要用到这个值,因为我们直接复用了请求返回的状态)。

如果你的场景需要同时请求多个权限,新版的写法示例如下:

Map<Permission, PermissionStatus> statuses = await [
  Permission.storage,
  Permission.camera,
].request();
// 检查某个权限的状态
if (statuses[Permission.storage] != PermissionStatus.granted) {
  // 处理权限未授予的逻辑
}

内容的提问来源于stack exchange,提问作者Wellkit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 21:37:30