Background
Get set up with the Helium SDK for Flutter. Reach out over your Helium slack channel or email founders@tryhelium.com for any questions.Installation
The minimum version of Flutter supported by this SDK is 3.24.0.
You can still use Cocoapods for your dependencies if preferred. If you need to disable Swift Package Manager dependencies after having enabled it, refer to that same Flutter documentation.
iOS Settings
Helium requires iOS 15+. If your app already has a minimum of iOS 15 or higher, you’re all set. This can be specified in yourios/Podfile with:
Initialize Helium
In your app’s initialization code (typically inmain.dart or your root widget), add the following to configure Helium and prepare your paywalls:
Custom User ID and Custom User Traits
Custom User ID and Custom User Traits
You can set a custom user ID and custom user traits with the Set these values before or during
initialize method or by calling:initialize to ensure consistency in analytics events and for the best experimentation results.Checking Download Status
Checking Download Status
In most cases there is no need to check download status. Helium will display a loading indication if a paywall is presented before download has completed.
notDownloadedYet: The download has not been initiated.inProgress: The download has not been initiated.downloadSuccess: The download was successful.downloadFailure: The download failed.
await heliumFlutter.paywallsLoaded()Presenting Paywalls
You must have a trigger and workflow configured in the dashboard in order to show a paywall.
1. Show it as a full-screen modal (recommended)
You can present a paywall programmatically using thepresentUpsell method:
presentUpsell:
2. Via Widget Integration
You can use theHeliumFlutter.getUpsellWidget method to embed a paywall directly in your widget tree:
You will have to handle your own dismissal in this case. You can do so by passing in PaywallEventHandlers and using the
onDismissed handler.Helium Events
To handle various paywall-related events, implementHeliumCallbacks and pass it to initialize:
Handling Purchases
By default, Helium will handle purchase logic for you. If you want a custom implementation, you’ll want to implementHeliumPurchaseDelegate and pass that into initialize.
Basic Implementation
Here’s a basic (incomplete) implementation ofHeliumPurchaseDelegate: