Reference
This section is a comprehensive reference of the methods and events exposed by the Flutter SDK that you can leverage in your application.
These methods are accessible in the DidomiSdk
class. Also make sure to always call the SDK after it is fully initialized (see onReady).
addEventListener
Add an event listener to catch events triggered by the SDK. Events listeners allow you to react to different events of interest. This function is safe to call before the ready
event has been triggered.
Requires SDK to be initialized
No.
Parameters
Name
Type
Description
eventListener
EventListener
The event listener. An instance ofEventListener
Returns
Nothing
Example
Event types
The following events are supported by the Didomi SDK:
Method
Description
onReady
When the SDK is ready.
onError
When the SDK encountered an error (message
provided as parameter).
onShowNotice
When the consent notice gets displayed. If you have disabled our default consent notices to replace them with your own, you need to show your custom notice when this event gets triggered.
onHideNotice
When the consent notice is hidden. If you have disabled our default consent notice to replace it with your own, you need to hide your custom notice when this event gets triggered.
onShowPreferences
When the preferences screen is displayed.
onHidePreferences
When the preferences screen is hidden.
onNoticeClickAgree
When user clicks on agree on the notice.
onNoticeClickDisagree
When user clicks on disagree on the notice.
onNoticeClickViewVendors
When user clicks on partners on the notice.
onNoticeClickViewSPIPurposes
When user clicks on view Sensitive Personal Information on the preferences popup.
onNoticeClickMoreInfo
When user clicks on learn more on the notice.
onNoticeClickPrivacyPolicy
When user clicks on privacy policy on the notice.
onPreferencesClickAgreeToAll
When user clicks on agree to all on the preferences popup.
onPreferencesClickDisagreeToAll
When user clicks on disagree to all on the preferences popup.
onPreferencesClickPurposeAgree
When user agree to a purpose on the preferences popup (purposeId
provided as parameter).
onPreferencesClickPurposeDisagree
When user disagree to a purpose on the preferences popup (purposeId
provided as parameter).
onPreferencesClickCategoryAgree
When user agree to a category on the preferences popup (categoryId
provided as parameter).
onPreferencesClickCategoryDisagree
When user disagree to a category on the preferences popup (categoryId
provided as parameter).
onPreferencesClickViewVendors
When user clicks on view vendors on the preferences popup.
onPreferencesClickViewSPIPurposes
When user clicks on view Sensitive Personal Information on the preferences popup.
onPreferencesClickSaveChoices
When user saves his choice on the preferences popup.
onPreferencesClickAgreeToAllPurposes
When user flips ON all purposes switch on the preferences popup.
onPreferencesClickDisagreeToAllPurposes
When user flips OFF all purposes switch on the preferences popup.
onPreferencesClickResetAllPurposes
When user reset all purposes switch on the preferences popup.
onPreferencesClickVendorAgree
When user agree to a vendor on the preferences popup (vendorId
provided as parameter).
onPreferencesClickVendorDisagree
When user disagree to a vendor on the preferences popup (vendorId
provided as parameter).
onPreferencesClickVendorSaveChoices
When user saves his choice on the vendors view on the preferences popup.
onPreferencesClickViewPurposes
When user clicks on view purposes on the preferences popup.
onPreferencesClickAgreeToAllVendors
When user flips ON all vendors switch on the preferences popup.
onPreferencesClickDisagreeToAllVendors
When user flips OFF all vendors switch on the preferences popup.
onPreferencesClickSPIPurposeAgree
When user agree to a purpose on the Sensitive Personal Information view from the preferences popup (purposeId
provided as parameter).
onPreferencesClickSPIPurposeDisagree
When user disagree to a purpose on the Sensitive Personal Information view from the preferences popup (purposeId
provided as parameter).
onPreferencesClickSPICategoryAgree
When user agree to a category on the Sensitive Personal Information view from the preferences popup (categoryId
provided as parameter).
onPreferencesClickSPICategoryDisagree
When user disagree to a category on the Sensitive Personal Information view from preferences popup (categoryId
provided as parameter).
onPreferencesClickSPIPurposeSaveChoices
When user saves his choice on the Sensitive Personal Information view from preferences popup.
onConsentChanged
When a consent is given or withdrawn by the user. Only triggered when the consent status actually changes (ie if the user saves consents without adding/removing any consent then this does not get called).
onSyncReady
When the consent synchronization process is complete.
event
parameter is a SyncReadyEvent
object that contains the fields statusApplied
and syncAcknowledged
(see below)
SyncReadyEvent.statusApplied
Whether the user status was applied locally
SyncReadyEvent.syncAcknowledged
Function that triggers a sync.acknowledged
API event when called. It returns true
if the API event was sent successfully.
onSyncDone
When the consent synchronization is successful (organizationUserId
provided as parameter).
onSyncError
When the consent synchronization has failed (error
provided as parameter).
onLanguageUpdated
When the language has changed (languageCode
provided as parameter).
onLanguageUpdateFailed
When the language change has failed (reason
provided as parameter).
addVendorStatusListener
Listen for changes on the user status linked to a specific vendor.
Requires SDK to be initialized
No.
Parameters
vendorId
String
The ID of the vendor for which we want to start listening for changes.
This ID should be the ID provided by Didomi, which doesn't contain prefixes.
listener
Function(VendorStatus)
Method that will be executed whenever changes are detected on the specified vendor. When this callback is executed, the status linked to the specified vendor will be passed.
Returns
Nothing
Example
removeVendorStatusListener
Stop listening for changes on the user status linked to a specific vendor.
Requires SDK to be initialized
No.
Parameters
vendorId
String
The ID of the vendor for which we want to stop listening for changes.
This ID should be the ID provided by Didomi, which doesn't contain prefixes.
Returns
Nothing
Example
getDisabledPurposes
Removed since 2.0.0, use getUserStatus instead.
The result of this method has been replaced by userStatus.purposes?.consent?.disabled
.
getDisabledPurposeIds
Removed since 2.0.0, use getUserStatus instead.
The result of this method has been replaced by userStatus.purposes?.consent?.disabled
.
getDisabledVendors
Removed since 2.0.0, use getUserStatus instead.
The result of this method has been replaced by userStatus.vendors?.consent?.disabled
.
getDisabledVendorIds
Removed since 2.0.0, use getUserStatus instead.
The result of this method has been replaced by userStatus.vendors?.consent?.disabled
.
getEnabledPurposes
Removed since 2.0.0, use getUserStatus instead.
The result of this method has been replaced by userStatus.purposes?.global?.enabled
.
getEnabledPurposeIds
Removed since 2.0.0, use getUserStatus instead.
The result of this method has been replaced by userStatus.purposes?.global?.enabled
.
getEnabledVendors
Removed since 2.0.0, use getUserStatus instead.
The result of this method has been replaced byuserStatus.vendors?.consent?.enabled
.
getEnabledVendorIds
Removed since 2.0.0, use getUserStatus instead.
The result of this method has been replaced by userStatus.vendors?.consent?.enabled
.
getJavaScriptForWebView
Get JavaScript to embed into a WebView to pass the consent status from the app to the Didomi Web SDK embedded into the WebView.
Inject the returned tag into a WebView with evaluateJavaScript
.
Requires SDK to be initialized
Yes.
Parameters
No parameter.
Returns
Type
Description
Future<String>
JavaScript code to embed in a WebView
Example
getQueryStringForWebView
Get a query string parameter to append to the URL of a WebView to pass the consent status from the app to the Didomi Web SDK embedded into the WebView.
Read our article on sharing consent with WebViews for more information.
This method is currently available on Android platform only. Calling getQueryStringForWebView
on iOS platform will return an empty String.
Requires SDK to be initialized
Yes.
Parameters
No parameter.
Returns
Type
Description
Future<String>
Query string parameter with the format didomiConfig.user.externalConsent.value=...
. It can be appended to your URL after a ?
or a &
if your URL already contains a query string.
Example
getPurpose
Get a purpose based on its ID.
Requires SDK to be initialized
Yes.
Parameters
Name
Type
Description
purposeId
String
ID of the purpose we want to get.
Returns
Type
Description
Future<Purpose?>
A Purpose
with ID purposeId
found in the array of required purposes, or null
.
Example
getRequiredPurposes
Get the list of purpose that are required (automatically determined from the list of required vendors).
Requires SDK to be initialized
Yes.
Parameters
No parameter.
Returns
Type
Description
Future<List<Purpose>>
A list of type Purpose
containing the required purposes.
Example
getRequiredPurposeIds
Get the list of purpose IDs that are required (automatically determined from the list of required vendors).
Requires SDK to be initialized
Yes.
Parameters
No parameter.
Returns
Type
Description
Future<List<String>>
A list of type String
containing the IDs of required purposes.
Example
getRequiredVendors
Get the list of vendors that are required (determined from the configuration).
Requires SDK to be initialized
Yes.
Parameters
No parameter.
Returns
Type
Description
Future<List<Vendor>>
A list of type Vendor
containing the required vendors.
Example
getRequiredVendorIds
Get the list of vendor IDs that are required (determined from the configuration).
Requires SDK to be initialized
Yes.
Parameters
No parameter.
Returns
Type
Description
Future<List<String>>
A list of type String
containing the IDs of required vendors.
Example
getText
Method used to get a dictionary/map based on the key being passed. These keys and texts are extracted from the notice content, preferences content and the texts
property specified in the didomi_config.json
file as described here https://developers.didomi.io/cmp/mobile-sdk/consent-notice/customize-the-theme#translatable-texts-for-custom-notices.
Requires SDK to be initialized
Yes.
Parameters
Name
Type
Description
key
String
key associated to the dictionary that we want to get.
Returns
Type
Description
Dictionary/map: Future<Map<String, String>>
Dictionary/map containing the translations for an specific key in different languages, with the form { "en:" "text in English", "fr": "texte en Français" }
Example
getTranslatedText
Method used to get a translated text based on the key being passed.
The language and the source of this translated text will depend on the availability of the translation for the specific key.
The language being used will be either the selected language of the SDK (based on device Locale and other parameters) or the language specified by app developers as the default language being used by the SDK. The source can be either the didomi_config.json
file, which can be either local or remote, or a file that is bundled within the SDK.
These are the attempts performed by the SDK to try to find a translation for the specific key:
Get translated value in user locale (selected language) from
didomi_config.json
(either local or remote).Get translated value in default locale (from the config) from
didomi_config.json
(either local or remote).Get translated value in user locale (selected language) from the Didomi-provided translations (bundled within the Didomi SDK).
Get translated value in default locale (from the config) from the Didomi-provided translations (bundled within the Didomi SDK).
If no translation can be found after these 4 attempts, the key will be returned.
App developers can provide these translated texts through the didomi_config.json
file (locally or remotely) in 3 different ways:
Custom texts for the consent notice: https://developers.didomi.io/cmp/mobile-sdk/consent-notice/customize-the-notice#texts
Custom texts for the preferences: https://developers.didomi.io/cmp/mobile-sdk/consent-notice/customize-the-preferences-popup#text
Custom texts for custom notices: https://developers.didomi.io/cmp/mobile-sdk/consent-notice/build-your-own-custom-notice#translatable-texts-for-custom-notices
Requires SDK to be initialized
Yes.
Parameters
Name
Type
Description
key
String
key associated to the text that we want to get translated.
Returns
Translated text.
Example
getUserConsentStatusForPurpose
Removed since 2.0.0, use getUserStatus instead.
Search the purposeId in userStatus.purposes?.consent?.enabled
or userStatus.purposes?.consent?.disabled
.
getUserConsentStatusForVendor
Removed since 2.0.0, use getUserStatus instead.
Search the vendorId in userStatus.vendors?.consent?.enabled
or userStatus.vendors?.consent?.disabled
.
getUserConsentStatusForVendorAndRequiredPurposes
Removed since 2.0.0, use getUserStatus instead.
Search the vendorId in userStatus.vendors?.globalConsent?.enabled
or userStatus.vendors?.globalConsent?.disabled
.
getUserLegitimateInterestStatusForPurpose
Removed since 2.0.0, use getUserStatus instead.
Search the purposeId in userStatus.purposes?.legitimateInterest?.enabled
or userStatus.purposes?.legitimateInterest?.getDisabled
.
getUserLegitimateInterestForVendor
Removed since 2.0.0, use getUserStatus instead.
Search the vendorId in userStatus.vendors?.legitimateInterest?.enabled
or userStatus.vendors?.legitimateInterest?.getDisabled
.
getUserLegitimateInterestStatusForVendorAndRequiredPurposes
Removed since 2.0.0, use getUserStatus instead.
Search the vendorId in userStatus.vendors?.globalLegitimateInterest?.enabled
or userStatus.vendors?.globalLegitimateInterest?.disabled
.
getUserStatus
Get all the user consent status.
Throws
Type
Description
DidomiNotReadyException
Exception thrown when a method that requires the Didomi SDK to be ready is called before that. Developers can call this method within a try/catch or within a lambda expression passed into the onReady
method.
Returns
A UserStatus
object describing all the available and computed user information.
Parameter
Type
Description
purposes?.global?.disabled
List<String>?
Computed sets/lists of disabled IDs of purposes that have been chosen by the user regarding the consent or legitimate interest Legal Basis.
purposes?.global?.enabled
List<String>?
Computed sets/lists of enabled IDs of purposes that have been chosen by the user regarding the consent or legitimate interest Legal Basis. Purposes considered as essential will be part of the enabled IDs.
purposes?.consent?.disabled
List<String>?
Disabled IDs of purposes that have been explicitly chosen by the user regarding the consent Legal Basis.
purposes?.consent?.enabled
List<String>?
Enabled IDs of purposes that have been explicitly chosen by the user regarding the consent Legal Basis.
purposes?.legitimateInterest?.disabled
List<String>?
Disabled IDs of purposes that have been explicitly chosen by the user regarding the legitimate interest Legal Basis.
purposes?.legitimateInterest?.enabled
List<String>?
Enabled IDs of purposes that have been explicitly chosen by the user regarding the legitimate interest Legal Basis.
purposes?.essential
List<String>?
IDs of purposes that are considered essential.
vendors?.global?.disabled
List<String>?
Computed sets/lists of disabled IDs of vendors that have been chosen by the user regarding the consent or legitimate interest Legal Basis. This takes into account the consent and legitimate interest required purposes linked to vendors. When computing this property, essential purposes will be considered as enabled.
vendors?.global?.enabled
List<String>?
Computed sets/lists of enabled IDs of vendors that have been chosen by the user regarding the consent or legitimate interest Legal Basis. This takes into account the consent and legitimate interest required purposes linked to vendors. When computing this property, essential purposes will be considered as enabled.
vendors?.globalConsent?.disabled
List<String>?
Computed sets/lists of disabled IDs of vendors that have been chosen by the user regarding the consent Legal Basis. This takes into account the consent required purposes linked to vendors. When computing this property, essential purposes will be considered as enabled.
vendors?.globalConsent?.enabled
List<String>?
Computed sets/lists of enabled IDs of vendors that have been chosen by the user regarding the consent Legal Basis. This takes into account the consent required purposes linked to vendors. When computing this property, essential purposes will be considered as enabled.
vendors?.globalLegitimateInterest?.disabled
List<String>?
Computed sets/lists of disabled IDs of vendors that have been chosen by the user regarding the legitimate interest Legal Basis. This takes into account the legitimate interest required purposes linked to vendors. When computing this property, essential purposes will be considered as enabled.
vendors?.globalLegitimateInterest?.enabled
List<String>?
Computed sets/lists of enabled IDs of vendors that have been chosen by the user regarding the legitimate interest Legal Basis. This takes into account the legitimate interest required purposes linked to vendors. When computing this property, essential purposes will be considered as enabled.
vendors?.consent?.disabled
List<String>?
Disabled IDs of vendors that have been explicitly chosen by the user regarding the consent Legal Basis.
vendors?.consent?.enabled
List<String>?
Enabled IDs of vendors that have been explicitly chosen by the user regarding the consent Legal Basis.
vendors?.legitimateInterest?.disabled
List<String>?
Disabled IDs of vendors that have been explicitly chosen by the user regarding the legitimate interest Legal Basis.
vendors?.legitimateInterest?.enabled
List<String>?
Enabled IDs of vendors that have been explicitly chosen by the user regarding the legitimate interest Legal Basis.
userId
String?
Didomi user id.
created
String?
User choices creation date.
updated
String?
User choices update date.
consentString
String?
TFC consent as string.
additionalConsent
String?
Example
getUserStatusForVendor
Deprecated, use getUserStatus instead.
Search the vendorId in userStatus.vendors?.global?.enabled
or userStatus.vendors?.global?.disabled
.
Get the user consent and legitimate interest status for a given vendor.
Parameters
Name
Type
Description
vendorId
String
The ID of the vendor to check the user status for.
If you are checking an IAB vendor, pass the number as a String.
If you are checking a custom vendor, prefix your vendor ID with c:
.
Returns
A ConsentStatus
that indicates if the user has allowed both consent and legitimate interest data processing to the specific vendor.
If one of consent or legitimate interest data processing status is unknown or not allowed, disable
will be returned. If both are allowed by the user, the function will return enable
.
Example
getVendor
Get a vendor based on its ID.
Requires SDK to be initialized
Yes.
Parameters
Name
Type
Description
vendorId
String
ID of the vendor we want to get.
Returns
Type
Description
Future<Vendor?>
A Vendor
with ID vendorId
found in the array of required vendors, or null
.
Example
hideNotice
Hide the consent notice.
Parameters
No parameter.
Returns
Nothing
Example
hidePreferences
Hide the preferences popup.
Parameters
No parameter.
Returns
Nothing
Example
initialize
Initialize the SDK. The initialization runs on a background thread to avoid blocking your UI. Use the onReady function to know when the initialization is done and the SDK is ready to be used.
Parameters
The parameter disableDidomiRemoteConfig
is deprecated, we strongly suggest you to create your notice from the console (see Setup from the Console for more information).
Name
Type
Optional
Description
apiKey
String
No
Your API key
localConfigurationPath
String
Yes
The path to your local config file in your assets/
folder. Defaults to didomi_config.json
if null.
remoteConfigurationPath
String
Yes
The URL to a remote configuration file to load during initialization. When provided, the file at the URL will be downloaded and cached to be used instead of the local assets/didomi_config.json
. If there is no Internet connection available and no previously cached file, the local file will be used as fallback.
providerId
String
Yes
Your provider ID (if any). A provider ID is assigned when you work with Didomi through a third-party. If are not sure if you have one, set this to null
.
disableDidomiRemoteConfig
bool
Yes
Prevent the SDK from loading a remote configuration from the Didomi Console. Defaults to false
(loading remote config).
Set this parameter to false
to use a remote consent notice configuration loaded from the Didomi Console.
Set this parameter to true
to disable loading configurations from the Didomi Console.
languageCode
String
Yes
Language in which the consent UI should be displayed. By default, the consent UI is displayed in the language configured in the device settings. This property allows you to override the default setting and specify a language to display the UI in. String containing the language code or the local code e.g.: "es"
, "fr"
, "en-US"
, "zh-HK"
, etc.
noticeId
String
Yes
Notice ID to load the configuration from. If provided, the SDK bypasses the app ID targeting and directly loads the configuration from the notice ID.
Returns
Nothing
Example
isConsentRequired
Determine if consent is required for the user. This takes into account the location of the user and the configuration of the SDK:
If your app is configured to apply GDPR to all users then this function always returns
true
.If your app is configured to apply GDPR to EU users only then this function returns
true
only if the user in the EU.
Parameters
No parameter.
Returns
Future<bool>
Example
isUserConsentStatusPartial
Determine if all consent information is available for the user.
This function returns true
if and only if:
Consent is required for the user (ie the user is in the EU or your tag is configured to apply GDPR to all users)
At least one vendor is configured (if there is no vendor configured, this function always returns
false
as there is no consent to collect)We miss consent information for some vendors or purposes
If there is at least one piece of consent information missing for a single vendor/purpose, this function will return true
. The consent notice is usually displayed when this function returns true
although there is no guarantee of the direct mapping between the two.
An important edge case is when you add new vendors or if configured vendors ask for new purposes: the consent notice will be displayed again and this function will return true
until the user has given or denied consent. Vendors that already had consent before will still operate normally as we only recollect consent for additional vendors/purposes.
Parameters
No parameter.
Returns
Future<bool>
Example
isNoticeVisible
Check if the consent notice is currently displayed.
Parameters
No parameter.
Returns
Future<bool>
Example
isPreferencesVisible
Check if the preferences popup is currently displayed.
Parameters
No parameter.
Returns
Future<bool>
Example
isReady
Check if the SDK is ready.
Parameters
No parameter.
Returns
Future<bool>
Example
isUserStatusPartial
Determine if the user has provided a choice for all vendors selected for the regulation and linked data processing.
This function returns true
if the user has not expressed a choice for all the required vendors and data processing.
Requires SDK to be initialized
Yes.
Parameters
No parameter.
Returns
Future<bool>
Example
onError
Add a callback that will be called when the SDK initialization encounters an error. If the callback is added after the SDK initialization already failed, it will be called immediately.
Parameters
Name
Type
Description
callback
Function()
A callback to run when the SDK initialization encounters an error
Returns
Nothing
Example
onReady
Add a callback that will be called when the SDK is ready (ie fully initialized). If the callback is added after the SDK initialization, it will be called immediately.
All calls to other functions of this API must only be made in a callback to the ready event to make sure that the SDK is initialized before it is used.
Parameters
Name
Type
Description
callback
Function()
A callback to run when the SDK is ready
Returns
Nothing
Example
openCurrentUserStatusTransaction
Definition
Create an instance of the CurrentUserStatusTransaction
class.
This class provides mechanisms to stage updates to the user status regarding purposes and vendors, allowing for batch operations.
Updates made through its methods are queued and applied simultaneously to the user status only once the commit
method of the returned object is called.
Additional details:
The status of vendors and purposes whose IDs are not not specified through the methods provided by
CurrentUserStatusTransaction
are kept unchanged.Essential purposes are always set to enabled and can’t be updated by the methods provided by
CurrentUserStatusTransaction
.When the regulation applied for a user is
none
, the methods provided byCurrentUserStatusTransaction
should not update the status of any vendor or purpose which will always remain as enabled. When thecommit
method is called it will returnfalse
.If the IDs that are passed through the methods provided by
CurrentUserStatusTransaction
don’t correspond to vendors or purposes required by the Notice Config, they will be ignored.
Requires SDK to be initialized
Yes.
Parameters
No parameter.
Returns
An instance of the CurrentUserStatusTransaction
class.
Description of the CurrentUserStatusTransaction
class
enablePurpose
id
(String
): ID of the purpose to be enabled.
Current CurrentUserStatusTransaction
object.
Enable a single purpose based on its ID.
enablePurposes
ids
(List<String>
): IDs of the purposes to be enabled.
Current CurrentUserStatusTransaction
object.
Enable multiple purposes based on their IDs.
disablePurpose
id
(String
): ID of the purpose to be disabled.
Current CurrentUserStatusTransaction
object.
Disable a single purpose based on its ID.
disablePurposes
ids
(List<String>
): IDs of the purposes to be disabled.
Current CurrentUserStatusTransaction
object.
Disable multiple purposes based on their IDs.
enableVendor
id
(String
): Didomi ID of the vendor to be enabled.
Current CurrentUserStatusTransaction
object.
Enable a single vendor based on its Didomi ID.
enableVendors
ids
(List<String>
): Didomi IDs of the vendors to be enabled.
Current CurrentUserStatusTransaction
object.
Enable multiple vendors based on their Didomi IDs.
disableVendor
id
(String
): Didomi ID of the vendor to be disabled.
Current CurrentUserStatusTransaction
object.
Disable a single vendor based on its Didomi ID.
disableVendors
ids
(List<String>
): Didomi IDs of the vendors to be disabled.
Current CurrentUserStatusTransaction
object.
Disable multiple vendors based on their Didomi IDs.
commit
No parameters.
bool
: true
if user status has been updated, false
otherwise.
Commit the changes that have been made through other methods.
Examples
setLogLevel
Set the minimum level of messages to log. The SDK will not log messages under that level.
It uses a LogLevel
object which maps log levels to corresponding values in iOS / Android native platforms.