# getPresentationResult()

Check the outcome of a placement without presenting a paywall.

Purpose [#purpose]

Retrieves the presentation result for a placement without presenting the paywall. Call this when you need to know whether a placement would show a paywall, send the user to a holdout, or fail due to missing configuration before you decide how to render UI.

Signature [#signature]

```dart
Future<PresentationResult> getPresentationResult(
  String placement, {
  Map<String, Object>? params,
})
```

Parameters [#parameters]

<TypeTable
  type="{
  placement: {
    type: &#x22;String&#x22;,
    description: &#x22;The name of the placement to check.&#x22;,
    required: true,
  },
  params: {
    type: &#x22;Map<String, Object>?&#x22;,
    description: &#x22;Optional parameters to pass with the placement. These can be referenced within campaign rules. Keys beginning with `$` are reserved for Superwall and will be dropped. Nested maps and lists are currently unsupported and will be ignored.&#x22;,
    default: &#x22;null&#x22;,
  },
}"
/>

Returns / State [#returns--state]

Returns a `Future<PresentationResult>` that resolves to one of the following:

* `PlacementNotFoundPresentationResult` - The placement was not found
* `NoAudienceMatchPresentationResult` - No audience match for the placement
* `PaywallPresentationResult` - A paywall would be presented (contains experiment information)
* `HoldoutPresentationResult` - User is in a holdout group (contains experiment information)
* `PaywallNotAvailablePresentationResult` - Paywall is not available

Usage [#usage]

Checking if a paywall would be shown:

```dart
final result = await Superwall.shared.getPresentationResult(
  'premium_feature',
  params: {'source': 'onboarding'},
);

if (result is PaywallPresentationResult) {
  print('Paywall would be shown');
  print('Experiment ID: ${result.experiment.id}');
  print('Group ID: ${result.experiment.groupId}');
} else if (result is HoldoutPresentationResult) {
  print('User is in holdout group');
  print('Experiment ID: ${result.experiment.id}');
} else if (result is NoAudienceMatchPresentationResult) {
  print('No audience match');
} else if (result is PlacementNotFoundPresentationResult) {
  print('Placement not found');
} else if (result is PaywallNotAvailablePresentationResult) {
  print('Paywall not available');
}
```

Using with switch expressions:

```dart
final result = await Superwall.shared.getPresentationResult('premium_feature');

switch (result) {
  case PaywallPresentationResult(experiment: final exp):
    print('Paywall would show for experiment ${exp.id}');
  case HoldoutPresentationResult(experiment: final exp):
    print('User in holdout for experiment ${exp.id}');
  case NoAudienceMatchPresentationResult():
    print('No audience match');
  case PlacementNotFoundPresentationResult():
    print('Placement not found');
  case PaywallNotAvailablePresentationResult():
    print('Paywall not available');
}
```

Related [#related]

* [`registerPlacement()`](/docs/flutter/sdk-reference/register) - Registers and presents a paywall
* [`PresentationResult`](/docs/flutter/sdk-reference/PresentationResult) - The result type returned by this method