requestAllPermissions method
Check and request all necessary permissions
Implementation
Future<PermissionStatus> requestAllPermissions() async {
try {
_logger.logInfo('Permissions', 'Starting permission request process...');
final permissions = <Permission>[];
// Location permissions
if (Platform.isAndroid) {
permissions.addAll([
Permission.locationWhenInUse,
Permission.locationAlways,
]);
} else if (Platform.isIOS) {
permissions.add(Permission.locationWhenInUse);
}
// Phone permission for carrier info (Android only)
if (Platform.isAndroid) {
permissions.add(Permission.phone);
}
// Request permissions
final Map<Permission, PermissionStatus> statuses = await permissions
.request();
// Log permission results
for (final entry in statuses.entries) {
_logger.logInfo(
'Permissions',
'${entry.key.toString()}: ${entry.value.toString()}',
);
}
// Check if location permission was granted
final locationStatus = Platform.isAndroid
? statuses[Permission.locationWhenInUse] ?? PermissionStatus.denied
: statuses[Permission.locationWhenInUse] ?? PermissionStatus.denied;
if (locationStatus.isGranted) {
_logger.logSuccess(
'Permissions',
'Essential permissions granted successfully',
);
return PermissionStatus.granted;
} else if (locationStatus.isPermanentlyDenied) {
_logger.logWarning(
'Permissions',
'Location permission permanently denied',
);
return PermissionStatus.permanentlyDenied;
} else {
_logger.logWarning('Permissions', 'Location permission denied');
return PermissionStatus.denied;
}
} catch (error) {
_logger.logError(
'Permissions',
'Permission request failed: ${error.toString()}',
);
return PermissionStatus.denied;
}
}