> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Flutter Feature Flags installation 1. 1 ## Install the package Required Add the PostHog Flutter SDK to your `pubspec.yaml`: pubspec.yaml ```yaml posthog_flutter: ^5.24.0 ``` 2. 2 ## Platform setup Required ## Tab Add these values to your `AndroidManifest.xml`: android/app/src/main/AndroidManifest.xml ```xml [...] ``` Update the minimum Android SDK version to **21** in `android/app/build.gradle`: android/app/build.gradle ```groovy defaultConfig { minSdkVersion 23 // rest of your config } ``` ## Tab Add these values to your `Info.plist`: ios/Runner/Info.plist ```xml [...] com.posthog.posthog.PROJECT_TOKEN com.posthog.posthog.POSTHOG_HOST https://us.i.posthog.com com.posthog.posthog.CAPTURE_APPLICATION_LIFECYCLE_EVENTS com.posthog.posthog.DEBUG ``` Update the minimum platform version to iOS 13.0 in your `Podfile`: Podfile ```ruby platform :ios, '13.0' # rest of your config ``` ## Tab Add these values in `index.html`: web/index.html ```html ... ... ``` 3. 3 ## Send events Recommended Once installed, PostHog will automatically start capturing events. You can also manually send events to test your integration: Dart ```dart import 'package:posthog_flutter/posthog_flutter.dart'; await Posthog().capture( eventName: 'button_clicked', properties: { 'button_name': 'signup' } ); ``` 4. 4 ## Evaluate boolean feature flags Required Check if a feature flag is enabled: Dart ```dart final isMyFlagEnabled = await Posthog().isFeatureEnabled('flag-key'); if (isMyFlagEnabled) { // Do something differently for this user // Optional: fetch the payload final matchedFlagPayload = (await Posthog().getFeatureFlagResult('flag-key'))?.payload; } ``` 5. 5 ## Evaluate multivariate feature flags Optional For multivariate flags, check which variant the user has been assigned: Dart ```dart final enabledVariant = await Posthog().getFeatureFlag('flag-key'); if (enabledVariant == 'variant-key') { // replace 'variant-key' with the key of your variant // Do something differently for this user // Optional: fetch the payload final matchedFlagPayload = (await Posthog().getFeatureFlagResult('flag-key'))?.payload; } ``` 6. 6 ## Running experiments Optional Experiments run on top of our feature flags. Once you've implemented the flag in your code, you run an experiment by creating a new experiment in the PostHog dashboard. 7. 7 ## Next steps Recommended Now that you're evaluating flags, continue with the resources below to learn what else Feature Flags enables within the PostHog platform. | Resource | Description | | --- | --- | | [Creating a feature flag](/docs/feature-flags/creating-feature-flags.md) | How to create a feature flag in PostHog | | [Adding feature flag code](/docs/feature-flags/adding-feature-flag-code.md) | How to check flags in your code for all platforms | | [Framework-specific guides](/docs/feature-flags/tutorials.md#framework-guides) | Setup guides for React Native, Next.js, Flutter, and other frameworks | | [How to do a phased rollout](/tutorials/phased-rollout.md) | Gradually roll out features to minimize risk | | [More tutorials](/docs/feature-flags/tutorials.md) | Other real-world examples and use cases | ### Still have questions? Ask PostHog AI ### Was this page useful? HelpfulCould be better