权限申请
区别
- 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');
}