如何将旧版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
相关产品推荐
相关产品推荐

