Migration to v4.0

This guide will assist developers to move from Flagship 3.X to Flagship 4.X.

The main breaking changes are:

  • Consent Management

  • Visitor Status

See the full change log on Github.

The version 4.X introduces a required consent parameter when creating a Visitor instance:

*VisitorBuilder newVisitor({required String visitorId, required bool hasConsented, Instance instanceType = Instance.SINGLE_INSTANCE})

// 1-  In the version 4.X we added a label for visitorId parameter and introduce required consent parameter.
// 2-  Remove from the builder .hasConsented function.
   var  visitor = Flagship.newVisitor(visitorId: "visitorId", hasConsented: true).withContext({"isVip": true}).build();
import Flagship
// When omitted default consent value was true.
Visitor visitor1 = Flagship.newVisitor("visitor_1").withContext({"isVip": true}).hasConsented(true).isAuthenticated(true).build();

Flagship SDK Status

Status Listener

The withStatusListener renamed to onSdkStatusChangedand the type of parameter fromStatustoFSSdkStatus_

  • ConfigBuilder onSdkStatusChanged(SdkStatusChanged pSdkStatusChanged)

Get Status

Status Values

FSSdkStatus
Description

SDK_NOT_INITIALIZED

The SDK has not been started

SDK_INITIALIZING

The SDK still starting, in bucketing mode the sdk needs to download the ressources (bucketing file) before start. if the file exist already this status is skipped

SDK_INITIALIZED

The SDK is ready to use.

SDK_PANIC

The SDK is ready but is running in Panic mode: All visitor's features are disabled except 'fetchFlags' which refreshes this status.

Flag

The defaultValue in 4.X is provided at the reading value method through the flag instance and not as 3.X which is provided at getFlag method.

Get Flag

You can retrieve Flag by using the following functions from the Visitor instance:

  • Flag getFlag<T>(String key)

Reading Flag Value

To read the current flag's value, simply call value() method of the Flag object.

  • dynamic value<T>(T? defaultValue, {bool visitorExposed = true})

Last updated

Was this helpful?