requestPermissions method
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;
}