requestPermissions method

void requestPermissions(
  1. dynamic back, {
  2. bool chat = true,
  3. int index = -1,
})

Implementation

void requestPermissions(back, {bool chat = 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 {
    rest = await [
      Permission.storage,
    ].request();
  }
  AppConfig.printLog(rest);
  bool denied = rest.containsValue(PermissionStatus.permanentlyDenied) ||
      rest.containsValue(PermissionStatus.restricted);
  if (denied) {
    showDenied(chat, index);
  } else {
    if (rest[Permission.camera] == PermissionStatus.granted) {
      delegate?.logEvent('用户同意摄像头权限');
    } else {
      delegate?.logEvent('用户拒绝摄像头权限');
    }
    if (rest[Permission.microphone] == PermissionStatus.granted) {
      delegate?.logEvent('用户同意麦克风权限');
    } else {
      delegate?.logEvent('用户拒绝麦克风权限');
    }
  }
  bool allOk = true;
  rest.values.forEach((element) {
    if (element != PermissionStatus.granted) {
      allOk = false;
    }
  });
  back?.call(allOk);
}