requestPermissions method

Future<bool> requestPermissions({
  1. bool chat = true,
  2. bool show = true,
  3. int index = -1,
})

Implementation

Future<bool> requestPermissions({bool chat = true, bool show = true, int index = -1}) async {
  Map<Permission, PermissionStatus> rest;
  if (chat) {
    rest = await [
      Permission.camera,
      Permission.microphone,
    ].request();
  } else if (index == 0) {
    rest = await [
      Permission.camera,
    ].request();
  } else if (index == 1) {
    rest = await [
      Platform.isAndroid ? Permission.storage : Permission.photos,
    ].request();
  } else if (index == 2) {
    rest = await [
      Permission.microphone,
    ].request();
  } else if (index == 4) {
    rest = await [
      Permission.phone,
    ].request();
  } else if (index == 5) {
    rest = await [
      Permission.appTrackingTransparency,
    ].request();
  } else {
    rest = await [
      Permission.storage,
    ].request();
  }
  AppConfig.printLog(rest);
  bool denied = rest.containsValue(PermissionStatus.permanentlyDenied) ||
      rest.containsValue(PermissionStatus.restricted);
  if (denied&&show) {
    showDenied(chat, index);
  } else if (chat) {
    if (rest[Permission.camera] == PermissionStatus.granted) {
      delegate?.logEvent('用户同意摄像头权限');
    } else {
      delegate?.logEvent('用户拒绝摄像头权限');
    }
    if (rest[Permission.microphone] == PermissionStatus.granted) {
      delegate?.logEvent('用户同意麦克风权限');
    } else {
      delegate?.logEvent('用户拒绝麦克风权限');
    }
  } else if (index == 0) {
    if (rest[Permission.camera] == PermissionStatus.granted) {
      delegate?.logEvent('用户同意摄像头权限');
    } else {
      delegate?.logEvent('用户拒绝摄像头权限');
    }
  } else if (index == 2) {
    if (rest[Permission.microphone] == PermissionStatus.granted) {
      delegate?.logEvent('用户同意麦克风权限');
    } else {
      delegate?.logEvent('用户拒绝麦克风权限');
    }
  }
  bool allOk = true;
  for (var element in rest.values) {
    if (index == 1 &&
        element != PermissionStatus.granted &&
        element != PermissionStatus.limited) {
      allOk = false;
    } else if (index != 1 && element != PermissionStatus.granted) {
      allOk = false;
    }
  }
  return allOk;
}