mixpanel_analytics 2.1.1 copy "mixpanel_analytics: ^2.1.1" to clipboard
mixpanel_analytics: ^2.1.1 copied to clipboard

A dart wrapper on the mixpanel REST API to be used in Flutter applications. As this is using the http REST API it works both with Android and iOS.

example/lib/main.dart

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:mixpanel_analytics/mixpanel_analytics.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final _user$ = StreamController<String>.broadcast();

  MixpanelAnalytics? _mixpanel;
  MixpanelAnalytics? _mixpanelBatch;

  Object? _error;
  String? _success;

  int _levelNumber = 0;

  @override
  void initState() {
    super.initState();

    _mixpanel = MixpanelAnalytics(
      token: 'XXXX',
      userId$: _user$.stream,
      verbose: true,
      shouldAnonymize: true,
      shaFn: (value) => value,
      onError: (e) => setState(() {
        _error = e;
        _success = null;
      }),
    );

    _mixpanelBatch = MixpanelAnalytics.batch(
      token: 'XXXX',
      userId$: _user$.stream,
      uploadInterval: Duration(seconds: 30),
      shouldAnonymize: true,
      shaFn: (value) => value,
      verbose: true,
      onError: (e) => setState(() {
        _error = e;
        _success = null;
      }),
    );

    _user$.add('111112');
  }

  @override
  void dispose() {
    _user$.close();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              child: Text('Send track event'),
              onPressed: () async {
                var result = await _mixpanel!
                    .track(event: 'testEvent', properties: {'prop1': 'value1'});
                if (result) {
                  setState(() {
                    _success = 'Success!';
                    _error = '';
                  });
                }
              },
            ),
            ElevatedButton(
              child: Text('Send engage event'),
              onPressed: () async {
                var result = await _mixpanel!
                    .engage(operation: MixpanelUpdateOperations.$set, value: {
                  'Level Number': _levelNumber,
                });
                _levelNumber++;
                if (result) {
                  setState(() {
                    _success = 'Success!';
                    _error = '';
                  });
                }
              },
            ),
            ElevatedButton(
              child: Text('Send track event in batch'),
              onPressed: () async {
                var result = await _mixpanelBatch!
                    .track(event: 'testEvent', properties: {'prop1': 'value1'});
                if (result) {
                  setState(() {
                    _success = 'Success!';
                    _error = '';
                  });
                }
              },
            ),
            ElevatedButton(
              child: Text('Send engage event in batch'),
              onPressed: () async {
                var result = await _mixpanelBatch!
                    .engage(operation: MixpanelUpdateOperations.$set, value: {
                  'Level Number': _levelNumber,
                });
                _levelNumber++;
                if (result) {
                  setState(() {
                    _success = 'Success!';
                    _error = '';
                  });
                }
              },
            ),
            _error != null ? Text(_error.toString()) : Container(),
            _success != null ? Text(_success!) : Container(),
          ],
        ),
      ),
    );
  }
}
23
likes
130
pub points
83%
popularity

Publisher

verified publisherkoahealth.tech

A dart wrapper on the mixpanel REST API to be used in Flutter applications. As this is using the http REST API it works both with Android and iOS.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter, http, shared_preferences

More

Packages that depend on mixpanel_analytics