Disclaimer: This website requires Please enable JavaScript in your browser settings for the best experience.

The availability of features may depend on your plan type. Contact your Customer Success Manager if you have any questions.

Thanks to visit codestin.com
Credit goes to docs.developers.optimizely.com

Dev guideRecipesAPI ReferenceChangelog
Dev guideAPI ReferenceRecipesChangelogUser GuideGitHubDev CommunityOptimizely AcademySubmit a ticketLog In
Dev guide

OptimizelyDecision for the Flutter SDK

Describes the OptimizelyDecision object, which is returned from the decide methods in Optimizely Feature Experimentation.

Version

1.0.1 or higher

Object model

The following shows the object model for the OptimizelyDecision object.

class Decision {
  String variationKey;
  String flagKey;
  String ruleKey;
  bool enabled;
  Map<String, dynamic> userContext;
  Map<String, dynamic> variables;
  List<String> reasons;
}

The following table describes the fields of the OptimizelyDecision object:

Field

Type

Description

enabled

bool

Whether the flag is enabled or not. Optimizely Feature Experimentation never returns null for this field; it returns false when it fails to make a decision due to an error.

variables

Map<String, dynamic>

Key-value pairs of all the flag variables. When there are no variables defined for the flag or the SDK cannot get variables, this field returns an empty map. When SDK fails to get variables for a decision, the Reasons field includes the error messages regardless of the Include Reasons option.

variation key

String (nullable)

When SDK fails to make a decision, this field returns null, and the Reasons field includes the log messages if the Include Reasons option is set.

In legacy projects, there is an edge case: 1. no messages in the Reasons field and 2. null value in the Variation Key field means that a variation cannot be found (for example, because the flag is part of a rollout).

rule key

String (nullable)

The key of the flag rule that the user bucketed into for this decision.

When a valid rule key is unavailable, returns a copy of the experiment key.

Returns null if neither a valid rule key nor an experiment key is found.

flag key

String

The key of the flag for which the decision was made.

userContext

Map<String, dynamic>

The user associated with the call to the Decide method.

reasons

Array

An array of relevant error and log messages in chronological order. Optimizely Feature Experimentation returns messages in this field:

  • when errors are detected while making decisions.
  • when reasons for decisions are enabled in the decide options
  • an empty array when there are no messages. See the following section for more information.

Reasons

The returned decision object includes error and log messages in the Reasons field.

Error reasons

For consistency with other decision results, Optimizely Feature Experimentation returns a decision with null fields instead of throwing errors or exceptions.

They system includes critical errors in the Reasons field of the returned decision object, regardless of the include reasons option you set on the Decide method.

ErrorPossible reasons
null variationKey- Optimizely Feature Experimentation SDK not configured properly yet - User context is not valid - No flag was found for key
empty variables- Invalid variables for OptimizelyJSON - Variable value for key is invalid or wrong type

Log reasons

Optimizely Feature Experimentation collects log messages in the Reasons field of the returned OptimizelyDecision object in the order in which they are logged.

The system only includes the following types of log messages in the Reasons field if you set the include reasons option on the Decide method:

  • Log messages related to bucketing users based on audiences or attributes.
  • Log messages related to bucketing users based on traffic percentages.

Examples

For an example of a returned decision object, see the Example Decision section of the Decide methods documentation.