> 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