flutter_piwikpro 1.1.0 copy "flutter_piwikpro: ^1.1.0" to clipboard
flutter_piwikpro: ^1.1.0 copied to clipboard

A dedicated Piwik PRO SDK that brings Piwik PRO Analytics to Flutter-based applications.

example/lib/main.dart

// 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,
      ),
    );
  }
}
2
likes
110
pub points
76%
popularity

Publisher

verified publisherpiwik.pro

A dedicated Piwik PRO SDK that brings Piwik PRO Analytics to Flutter-based applications.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on flutter_piwikpro