flutter_piwikpro 1.1.0 flutter_piwikpro: ^1.1.0 copied to clipboard
A dedicated Piwik PRO SDK that brings Piwik PRO Analytics to Flutter-based applications.
// ignore_for_file: avoid_print
import 'package:flutter/material.dart';
import 'package:flutter_piwikpro/model/ecommerce_transaction_item.dart';
import 'package:flutter_piwikpro/model/ecommerce_product.dart';
import 'package:flutter_piwikpro/flutter_piwikpro.dart';
void main() {
final _ecommerceTransactionItems = [
EcommerceTransactionItem(category: 'cat1', sku: 'sku1', name: 'name1', price: 20, quantity: 1),
EcommerceTransactionItem(category: 'cat2', sku: 'sku2', name: 'name2', price: 10, quantity: 1),
EcommerceTransactionItem(category: 'cat3', sku: 'sku3', name: 'name3', price: 30, quantity: 2),
];
final _ecommerceProducts = [
EcommerceProduct(sku: 'craft-311',
name: 'Unicorn Iron on Patch',
category: ['Crafts & Sewing', 'Toys'],
price: '49.9089',
quantity: 3,
brand: 'DMZ',
variant: 'blue',
customDimensions: {1: '/Users/Library/Developer/', 2: '20%'}),
EcommerceProduct(sku: 'dert-456')
];
//Replace with your Tracking Server's values
const String _siteId = '01234567-89ab-cdef-0123-456789abcdef';
const String _baseUrl = 'https://your.piwik.pro.server.com';
final _flutterPiwik = FlutterPiwikPro.sharedInstance;
runApp(MyApp(
ecommerceTransactionItems: _ecommerceTransactionItems,
ecommerceProducts: _ecommerceProducts,
siteId: _siteId,
baseUrl: _baseUrl,
flutterPiwik: _flutterPiwik,
));
}
class MyApp extends StatelessWidget {
const MyApp(
{required this.ecommerceTransactionItems,
required this.ecommerceProducts,
required this.siteId,
required this.baseUrl,
required this.flutterPiwik,
Key? key})
: super(key: key);
final List<EcommerceTransactionItem> ecommerceTransactionItems;
final List<EcommerceProduct> ecommerceProducts;
final String siteId;
final String baseUrl;
final FlutterPiwikPro flutterPiwik;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Padding(
padding: const EdgeInsets.only(left: 32.0, right: 32.0, bottom: 32.0),
child: Center(
child: SingleChildScrollView(
child: Column(
children: [
_buildTextWidget('Configure Tracker', () async {
try {
final result =
await flutterPiwik.configureTracker(baseURL: baseUrl, siteId: siteId);
print(result);
} catch (exception) {
print(exception);
}
}),
_buildTextWidget('Set Anonymization State True', () async {
final result = await flutterPiwik.setAnonymizationState(true);
print(result);
}),
_buildTextWidget(
'Track Screen',
() async {
try {
final result =
await flutterPiwik.trackScreen(screenName: "test", title: "test title");
print(result);
} catch (exception) {
print(exception);
}
},
),
_buildTextWidget('Track Custom Event', () async {
try {
final result = await flutterPiwik.trackCustomEvent(
action: 'test action',
category: 'test category',
name: 'test name',
path: 'test path',
value: 120);
print(result);
} catch (exception) {
print(exception);
}
}),
_buildTextWidget('Track Exception', () async {
try {
final result = await flutterPiwik.trackException(
description: "description of an exception");
print(result);
} catch (exception) {
print(exception);
}
}),
_buildTextWidget('Track Download', () async {
try {
final result =
await flutterPiwik.trackDownload('http://your.server.com/bonusmap2.zip');
print(result);
} catch (exception) {
print(exception);
}
}),
_buildTextWidget('Track Ecommerce Transaction', () async {
final result = await flutterPiwik.trackEcommerceTransaction(
identifier: "testId",
grandTotal: 100,
subTotal: 10,
tax: 5,
shippingCost: 100,
discount: 6,
transactionItems: ecommerceTransactionItems,
);
print(result);
}),
_buildTextWidget('Track Ecommerce Product Detail View', () async {
final result = await flutterPiwik.trackEcommerceProductDetailView(
products: ecommerceProducts,
);
print(result);
}),
_buildTextWidget('Track Ecommerce Cart Update', () async {
final result = await flutterPiwik.trackEcommerceCartUpdate(
grandTotal: '6000.43',
products: ecommerceProducts,
);
print(result);
}),
_buildTextWidget('Track Ecommerce Add to Cart', () async {
final result = await flutterPiwik.trackEcommerceAddToCart(
products: ecommerceProducts,
);
print(result);
}),
_buildTextWidget('Track Ecommerce Remove from Cart', () async {
final result = await flutterPiwik.trackEcommerceRemoveFromCart(
products: ecommerceProducts,
);
print(result);
}),
_buildTextWidget('Track Ecommerce Order', () async {
final result = await flutterPiwik.trackEcommerceOrder(
identifier: 'order-3415',
grandTotal: '10000',
subTotal: '120.00',
tax: '39.60',
shippingCost: '60.00',
discount: '18.00',
products: ecommerceProducts,
);
print(result);
}),
_buildTextWidget('Track Social Interaction', () async {
final result = await flutterPiwik.trackSocialInteraction(
network: "facebook",
interaction: "like"
);
print(result);
}),
_buildTextWidget('Track goal', () async {
final result = await flutterPiwik.trackGoal(
goal: "27ecc5e3-8ae0-40c3-964b-5bd8ee3da059",
revenue: 2.0
);
print(result);
}),
_buildTextWidget('Track outlink', () async {
final result = await flutterPiwik.trackOutlink(
"piwikPRO://piwikpro.com"
);
print(result);
}),
_buildTextWidget('Track campaign', () async {
final result = await flutterPiwik.trackCampaign(
"http://www.example.com?utm_campaign=camp_name3&pk_source=source&pk_medium=medium&pk_keyword=keyword&pk_content=content&pk_cid=id_code"
);
print(result);
})
],
),
),
),
),
),
);
}
Widget _buildTextWidget(String title, VoidCallback? onPressed) {
return TextButton(
onPressed: onPressed,
child: Container(
child: Text(
title,
style: const TextStyle(color: Colors.white),
),
color: Colors.blue,
),
);
}
}