Skip to main content

Flutter

Our Flutter SDK is available on pub.dev, sources are available on Github.

tip

You can check our demo application for minimal implementation example.

warning

AV Insight tracking is currently not available on Flutter SDK. Do not hesitate to contribute on GitHub!

Getting Started

You need to use piano_consents package.

  1. Add this to your pubspec.yaml file:
dependencies:
piano_analytics: ^1.0.1
  1. Install the plugin using the command
flutter pub get

Usage

  1. Initialize PianoAnalytics with your site and collect domain in your application initialization
import 'package:piano_analytics/piano_analytics.dart';

...

class _MyAppState extends State<MyApp> {

final _pianoAnalytics = PianoAnalytics(
site: 123456789,
collectDomain: "xxxxxxx.pa-cd.com",
visitorIDType: VisitorIDType.uuid,
storageLifetimeVisitor: 395,
visitorStorageMode: VisitorStorageMode.fixed,
ignoreLimitedAdvertisingTracking: true,
visitorId: "97c7db4e-4514-4b8e-b693-bd6b57043cc1"
);


void initState() {
super.initState();
initPlugins();
}

Future<void> initPlugins() async {
...
await _pianoAnalytics.init();
}
...
}
  1. Send events
await _pianoAnalytics.sendEvents(events: [
Event(name: "page.display", properties: [
Property.bool(name: "bool", value: true),
Property.int(name: "int", value: 1),
Property.int(name: "long", value: 9007199254740992),
Property.double(name: "double", value: 1.0),
Property.string(name: "string", value: "value"),
Property.date(name: "date", value: DateTime.now()),
Property.intArray(name: "intArray", value: [1, 2, 3]),
Property.doubleArray(name: "doubleArray", value: [1.0, 2.0, 3.0]),
Property.stringArray(name: "stringArray", value: ["a", "b", "c"])
])
]);

Consents

  1. Add this to your pubspec.yaml file:
dependencies:
piano_consents: ^1.0.0
  1. Install the plugin using the command
flutter pub get

Initialize PianoConsents

Important

Initialize PianoConsents before initializing PianoAnalytics

import 'package:piano_consents/piano_consents.dart';

...

class _MyAppState extends State<MyApp> {
final _pianoConsents = PianoConsents(
requireConsents: true,
defaultPurposes: {
PianoConsentProduct.pa: PianoConsentPurpose.audienceMeasurement
}
);


void initState() {
super.initState();
initPlugins();
}

Future<void> initPlugins() async {
...
await _pianoConsents.init();
...
}
...
}

Set consents

await _pianoConsents.set(
purpose: PianoConsentPurpose.audienceMeasurement,
mode: PianoConsentMode.essential,
products: [PianoConsentProduct.pa]);

Set all consents

await _pianoConsents.setAll(mode: PianoConsentMode.essential);

Set default consents

await _pianoConsents.clear();