Initialize user object
Whenever you initialize Insider SDK, you also initialize a new Insider user object. You can set attributes for this object and get this object with getCurrentUser method.
Insider user object represents the current user of your app. It is the main object that you can use for attribution (e.g. age, email, opt-in, etc.).
Method Signature
FlutterInsiderUser getCurrentUser()Method Example
FlutterInsider.Instance.getCurrentUser();Set email as user identifier
This method allows you to set the user identifier attribute of your Insider user object for data unification. With this attribute, you can unify your user data within Insider products and reach this user via different channels such as mobile app and web.
Method Signature
Future<FlutterInsiderIdentifiers> addEmail(String email) asyncMethod Example
FlutterInsiderIdentifiers identifiers = new FlutterInsiderIdentifiers();
identifiers.addEmail("sample@mail.com");
identifiers.addPhoneNumber("+651234567");
identifiers.addUserID("CRM-ID");
await FlutterInsider.Instance.getCurrentUser().login(identifiers);Phone numbers are required to start with a + (plus) sign followed by a country code. The country code should start with a number between 1-9.
Set phone number as user identifier
This method allows you to set the user identifier attribute of your Insider user object for data unification. With this attribute, you can unify your user data within Insider products and reach this user via different channels such as mobile app and web.
Method Signature
Future<FlutterInsiderIdentifiers> addPhoneNumber(String phoneNumber) asyncMethod Example
FlutterInsiderIdentifiers identifiers = new FlutterInsiderIdentifiers();
identifiers.addEmail("sample@mail.com");
identifiers.addPhoneNumber("+651234567");
identifiers.addUserID("CRM-ID");
await FlutterInsider.Instance.getCurrentUser().login(identifiers);Phone numbers are required to start with a + (plus) sign followed by a country code. The country code should start with a number between 1-9.
Set user ID as user identifier
This method allows you to set the user identifier attribute of your Insider user object for data unification. With this attribute, you can unify your user data within Insider products and reach this user via different channels such as mobile app and web.
Method Signature
Future<FlutterInsiderIdentifiers> addUserID(String userID) asyncMethod Example
FlutterInsiderIdentifiers identifiers = new FlutterInsiderIdentifiers();
identifiers.addEmail("sample@mail.com");
identifiers.addPhoneNumber("+651234567");
identifiers.addUserID("CRM-ID");
await FlutterInsider.Instance.getCurrentUser().login(identifiers);Phone numbers are required to start with a + (plus) sign followed by a country code. The country code should start with a number between 1-9.
Set name attribute
This method allows you to set the name attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| name | String |
Method Signature
Future setName(String name) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setName("name");Set surname attribute
This method allows you to set the surname attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| surname | String |
Method Signature
Future setSurname(String surname) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setSurname("surname");Set gender attribute
This method allows you to set the gender attribute for your Insider user object. You need to pass InsiderGender enum object as a parameter.
| Parameter | Enum values |
|---|---|
gender (InsiderGender enum) | InsiderGenderMale |
Method Signature
Future setGender(int gender) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setGender(InsiderGender.OTHER);Set age attribute
This method allows you to set the age attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
age | Integer |
Method Signature
Future setAge(int age) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setAge(23);Set birthday attribute
This method allows you to set the birthday attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| birthday | Date |
Method Signature
Future setBirthday(DateTime birthday) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setBirthday(new DateTime.now());Select language attribute
This method allows you to set the language attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| language | String |
Method Signature
Future setLanguage(String language) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setLanguage("language");Set email opt-in attribute
This method allows you to set the email opt-in (permission) attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| emailOptin | Boolean |
Method Signature
Future setEmailOptin(bool emailOptin) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setEmailOptin(true);Set sms opt-in attribute
This method allows you to set the sms opt-in (permission) attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| smsOptin | Boolean |
Method Signature
Future setSMSOptin(bool smsOptin) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setSMSOptin(true);Set Whatsapp opt-in attribute
This method allows you to set the whatsapp opt-in (permission) attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| whatsAppOptin | Boolean |
Method Signature
Future setWhatsappOptin(bool whatsappOptin) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setWhatsappOptin(true);Set push opt-in attribute
This method allows you to set the push opt-in (permission) attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| pushOptin | Boolean |
Method Signature
Future setPushOptin(bool pushOptin) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setPushOptin(true);Set location opt-in attribute
This method allows you to set the location opt-in (permission) attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| locationOptin | Boolean |
Method Signature
Future setLocationOptin(bool locationOptin) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setLocationOptin(true);Set promotional opt-in attribute
This method allows you to set the promotional opt-in (permission) attribute for your Insider user object. It stores the user's consent for promotional marketing messages so that it can be used for App Push targeting.
This attribute is stored at the user (profile) level, not per device, so its value applies to every device the user is identified on.
The method returns the FlutterInsiderUser object, so it can be chained with the other user attribute setters.
| Parameter | Data Type |
|---|---|
| promotionalOptin | Boolean |
Method Signature
FlutterInsiderUser setPromotionalOptin(bool promotionalOptin)Method Example
FlutterInsider.Instance.getCurrentUser().setPromotionalOptin(true);Set login attribute
This method allows you to set the login status attribute for your Insider user object.
Method Signature
Future login(FlutterInsiderIdentifiers identifiers) asyncMethod Example
FlutterInsiderIdentifiers identifiers = new FlutterInsiderIdentifiers();
identifiers.addEmail("sample@mail.com");
identifiers.addPhoneNumber("+651234567");
identifiers.addUserID("CRM-ID");
await FlutterInsider.Instance.getCurrentUser().login(identifiers);Set logout attribute
This method allows you to set the login status attribute for your Insider user object.
Method Signature
Future logout() asyncMethod Example
FlutterInsider.Instance.getCurrentUser().logout();Set logout-reset attribute
This method allows you to set the login status attribute for your Insider user object, then disassociate the user from the current device and generate new IID for the current device.
Also, this method allows you to send additional Identifiers to include in the logout process, all additional identifiers (including the currently logged in user) will be disassociated from the current device.
Method Signature
void logoutResettingInsiderID(
List<FlutterInsiderIdentifiers>? additionalIdentifiers, {
Function? insiderIDResult
})Method Example
// Logout the current user only
FlutterInsider.Instance.getCurrentUser().logoutResettingInsiderID(null);
// Logout the current user along side additional users
FlutterInsiderIdentifiers identifiers = FlutterInsiderIdentifiers()
..addEmail("user@example.com")
..addUserID("user123");
FlutterInsider.Instance.getCurrentUser().logoutResettingInsiderID([identifiers]);Set signup event
To trigger action for signup of users, you need to call this method whenever a user sign up to the app.
Method Signature
Future signUpConfirmation() asyncMethod Example
FlutterInsider.Instance.signUpConfirmation()Set locale attribute
This method allows you to set the locale attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| locale | String |
Method Signature
Future setLocale(String locale) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setLocale("en_EN");Set custom string attribute
This method allows you to set the custom string attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| key | String |
| value | String |
Method Signature
Future setCustomAttributeWithString(String key, String value) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithString("key", "stringValue");Set custom integer attribute
This method allows you to set the custom integer attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| key | String |
| value | Integer |
Method Signature
Future setCustomAttributeWithInt(String key, int value) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithInt("key", 10);Set custom boolean attribute
This method allows you to set the custom boolean attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| key | String |
| value | Boolean |
Method Signature
Future setCustomAttributeWithBoolean(String key, bool value) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithBoolean("key", true);Set custom double attribute
This method allows you to set the custom double attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| key | String |
| value | Double |
Method Signature
Future setCustomAttributeWithDouble(String key, double value) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithDouble("key", 10.5);Set custom date attribute
This method allows you to set the custom date attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| key | String |
| value | Date object |
Method Signature
Future setCustomAttributeWithDate(String key, DateTime value) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithDate("key", new DateTime.now());Set custom array attribute
This method allows you to set the custom array attribute for your Insider user object.
| Parameter | Data Type |
|---|---|
| key | String |
| value | Array (of string) |
Method Signature
Future setCustomAttributeWithArray(String key, List value) asyncMethod Example
List<String> arr = new List(3);
arr[0] = "item1";
arr[1] = "item2";
arr[2] = "item3";
FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithArray("key", arr);Unset custom attribute
This method allows you to unset any custom attribute of your Insider user object. This method will remove the respective the custom attribute of your user for the given key permanently.
| Parameter | Data Type |
|---|---|
| key | String |
Method Signature
Future unsetCustomAttribute(String key) asyncMethod Example
FlutterInsider.Instance.getCurrentUser().unsetCustomAttribute("key");Add objects to a custom attribute
Use these methods to add, merge, and remove objects in an Array of Objects custom attribute of the current user. Define the attribute in the panel first; see Create an Array of Objects Attribute.
Rules for object values:
- Object keys must match ^[a-z][0-9a-z_]*$. Invalid keys are dropped and named in a console warning; the rest of the call is still sent.
- An attribute or parameter key that is empty, whitespace-only, or does not match the same pattern is refused with a console warning.
- Values can be String, int, double, bool, DateTime, a List or Set of strings or numbers, or a nested Map<String, Object>.
- A string longer than 500 characters, a null value, and a NaN or infinite number are dropped and named in a single console warning per call.
- A nested map can hold only plain values; a map inside a nested map is dropped with its key and named in the console warning. For example, {'a': {'b': 1}} is sent as is, while in {'a': {'b': {'c': 1}, 'd': 2}} 'b' is dropped and 'a' is sent with 'd' only.
- An object that keeps no key is dropped.
Call addObjectsToCustomAttribute to add a list of objects to an Array of Objects attribute of the current user.
| Parameter | Data Type | Description |
|---|---|---|
| key | String | Key of the Array of Objects attribute defined in the panel. |
| objects | List<Map<String, Object>> | The objects to add. |
Method Signature
FlutterInsiderUser addObjectsToCustomAttribute(
String key, List<Map<String, Object>> objects)Method Example
import 'package:flutter_insider/flutter_insider.dart';
FlutterInsider.Instance.getCurrentUser()?.addObjectsToCustomAttribute(
'c_favorite_products',
[
{'sku': 'SKU-1', 'qty': 2},
{'sku': 'SKU-2', 'qty': 1},
],
);An empty list, or a list in which no object keeps a key, is not sent; a console warning says so.
Merge values into matching objects
Call mergeObjectsInCustomAttribute to merge value into every object of the attribute that matches match.
| Parameter | Data Type | Description |
|---|---|---|
| key | String | Key of the Array of Objects attribute defined in the panel. |
| match | Map<String, Object> | Fields that select the objects to update. |
| value | Map<String, Object> | Fields to merge into each matching object. |
Method Signature
FlutterInsiderUser mergeObjectsInCustomAttribute(
String key, Map<String, Object> match, Map<String, Object> value)Method Example
import 'package:flutter_insider/flutter_insider.dart';
FlutterInsider.Instance.getCurrentUser()?.mergeObjectsInCustomAttribute(
'c_favorite_products',
{'sku': 'SKU-1'},
{'qty': 3},
);An empty match, or a value that is empty or keeps no key, is refused with a console warning. If any entry of match cannot be sent, the call is refused, so it never updates more objects than you meant.
Remove objects from a custom attribute
Call removeObjectsFromCustomAttribute with a match to remove the objects of the attribute that match it. Call it with the key only to remove every object.
| Parameter | Data Type | Description |
|---|---|---|
| key | String | Key of the Array of Objects attribute defined in the panel. |
| match | Map<String, Object>? | Optional. Fields that select the objects to remove. |
Method Signature
FlutterInsiderUser removeObjectsFromCustomAttribute(String key,
[Map<String, Object>? match])Method Example
import 'package:flutter_insider/flutter_insider.dart';
FlutterInsider.Instance.getCurrentUser()?.removeObjectsFromCustomAttribute(
'c_favorite_products',
{'sku': 'SKU-2'},
);Calling removeObjectsFromCustomAttribute(key) without a match removes every object and cannot be undone; a console warning says so.
An empty match or an explicit null is refused. If any entry of match cannot be sent, the call is refused, so it never removes more objects than you meant.
For troubleshooting, refer to Why cannot we trigger the login method a second time in an active session, Confusion of attributes among users after login