权限申请
区别
- request() 方法:
PermissionStatus permissionStatus = await Permission.location.request();
- 这个方法会主动请求权限,如果用户之前没有授予权限,会弹出权限请求对话框,提示用户授予权限。
- 这个方法返回的是用户的响应结果,即权限请求后的状态。
- status 属性:
PermissionStatus permissionStatus = await Permission.location.status;
- 这个方法不会主动请求权限,只是检查当前的权限状态。
- 这个方法返回的是当前的权限状态,而不改变或请求权限。
PermissionStatus status = await Permission.location.status;
// PermissionStatus status = await Permission.location.request();
if (status.isGranted) {
// 权限已授予,可以访问位置信息
print('Location permission granted');
} else if (status.isDenied) {
// 用户拒绝了权限请求,表示至少已经请求过一次权限
print('Location permission denied');
} else if (status.isPermanentlyDenied) {
// 用户永久拒绝了权限请求
print('Location permission permanently denied');
// 引导用户到设置页手动开启权限
openAppSettings();
} else if (status.isRestricted) {
// 权限受限,处理受限状态
print('Location permission restricted');
} else if (status.isLimited) {
// 用户授予了有限访问权限
print('Location permission limited');
} else if (status.isProvisional) {
// 临时授权发布通知
print('Location permission provisional');
}