requestMultiple method
Future<Map<Permission, bool>>
requestMultiple(
{ - required List<Permission> permissions,
- bool showRationaleDialog = true,
})
Implementation
Future<Map<Permission, bool>> requestMultiple({
required List<Permission> permissions,
bool showRationaleDialog = true,
}) async {
Map<Permission, PermissionStatus> statuses = {};
for (var permission in permissions) {
statuses[permission] = await permission.status;
}
List<Permission> permissionsToRequest = permissions
.where((permission) =>
statuses[permission]?.isDenied == true ||
statuses[permission]?.isRestricted == true)
.toList();
if (permissionsToRequest.isEmpty) {
return Map.fromIterable(permissions, key: (p) => p, value: (_) => true);
}
if (showRationaleDialog && permissionsToRequest.length > 0) {
bool userAccepted = await _showMultiplePermissionsDialog(
permissions: permissionsToRequest,
);
if (!userAccepted) {
return Map.fromIterable(permissions,
key: (p) => p, value: (p) => statuses[p]?.isGranted == true);
}
}
Map<Permission, PermissionStatus> results =
await permissionsToRequest.request();
return Map.fromIterable(permissions,
key: (p) => p,
value: (p) =>
results[p]?.isGranted == true || statuses[p]?.isGranted == true);
}