requestPermissionsInOrder function

Future<void> requestPermissionsInOrder(
  1. List<Permission> permissions
)

Requests permissions one at a time, skipping those already granted.

This is the default PermissionRequester.

One at a time is not a style choice: Android denies - without showing a dialog - any request made while another one is up, and a permission that unlocks another one can only be granted if asked first.

Implementation

Future<void> requestPermissionsInOrder(List<Permission> permissions) async {
  final asked = <Permission>{};

  for (final permission in permissions.expand(_withPrerequisite)) {
    if (!asked.add(permission)) continue;
    if (await permission.isGranted) continue;

    final status = await permission.request();
    info('Permission ${permission.toString().split('.').last}: ${status.name}');
  }
}