ensurePermissions method
Gestiona la verificación y solicitud de permisos de forma controlada.
Evita solicitudes duplicadas en la sesión salvo que forceRefresh sea true.
Implementation
Future<PermissionsStatus> ensurePermissions({
bool forceRefresh = false,
bool requestNotifications = true,
bool openAccessibilityIfMissing = false,
}) async {
if (_permissionsVerified && !forceRefresh && _cachedPermissions != null) {
return _cachedPermissions!;
}
var status = await NativeBridge.checkPermissions();
if (requestNotifications && !status.notifications) {
log('🔔 Solicitando permiso de notificaciones para foreground service...');
await NativeBridge.requestNotificationPermission();
status = await NativeBridge.checkPermissions();
}
if (openAccessibilityIfMissing && !status.accessibility) {
log('♿ Accesibilidad no habilitada, abriendo configuración...');
await NativeBridge.openAccessibilitySettings();
}
_cachedPermissions = status;
_permissionsVerified = true;
return status;
}