formica_tracker 1.0.0
formica_tracker: ^1.0.0 copied to clipboard
Formica Tracker SDK bridge library for Android and iOS - Fraud detection and device intelligence
example/lib/main.dart
import 'dart:async';
import 'dart:collection';
import 'package:flutter/material.dart';
import 'package:formica_tracker/formica_tracker.dart';
import 'package:formica_tracker/tracker/request_config.dart';
import 'constants.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool _initialized = false;
bool _nativeEventListenerActive = false;
final List<Map<String, dynamic>> _nativeEvents = [];
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Plugin example app')),
body: Center(
child: Column(
children: [
ElevatedButton(
onPressed: _handleInitialize,
child: Text('TrackerManager.initialize'),
),
Divider(),
Text('initialized: $_initialized'),
ElevatedButton(
onPressed: _handleIsInitialized,
child: Text('TrackerManager.isInitialized'),
),
Divider(),
ElevatedButton(
onPressed: _handleTriggerCustomEvent,
child: Text('TrakcerManager.triggerCustomEvent'),
),
Divider(),
ElevatedButton(
onPressed: _handleTriggerCustomEventSync,
child: Text('TrakcerManager.triggerCustomEventSync'),
),
Divider(),
ElevatedButton(
onPressed: _handleSetUserDefinedValues,
child: Text('TrackerManager.setUserDefinedValues'),
),
Divider(),
ElevatedButton(
onPressed: _getUserDefinedValues,
child: Text('TrackerManager.getUserDefinedValues'),
),
Divider(),
Text(
'Native Event Listener: ${_nativeEventListenerActive ? "Active" : "Inactive"}',
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: _handleSetNativeEventListener,
child: Text('Set Native Event Listener'),
),
ElevatedButton(
onPressed: _handleRemoveNativeEventListener,
child: Text('Remove Event Listener'),
),
],
),
Divider(),
Text('Native Events Received: ${_nativeEvents.length}'),
Expanded(
child: ListView.builder(
itemCount: _nativeEvents.length,
itemBuilder: (context, index) {
final event = _nativeEvents[index];
return ListTile(
title: Text(event['eventName'] ?? 'Unknown Event'),
subtitle: Text(event['data'].toString()),
dense: true,
);
},
),
),
],
),
),
),
);
}
Future<void> _handleInitialize() async {
await TrackerManager.initialize(
apiKey: apiKey,
serviceUrl: serviceUrl,
tenant: tenant,
);
}
Future<void> _handleIsInitialized() async {
_initialized = await TrackerManager.isInitialized();
setState(() {});
}
Future<void> _handleTriggerCustomEvent() async {
final HashMap<String, dynamic> args = HashMap.from({
'testKey': 'testValue',
});
await TrackerManager.triggerCustomEvent('testKey', args);
}
Future<void> _handleTriggerCustomEventSync() async {
final HashMap<String, dynamic> args = HashMap.from({
'testKey': 'testValue',
});
final result = await TrackerManager.triggerCustomEventSync(
'testKey',
args,
RequestConfig(0),
);
debugPrint('requestId: ${result.requestId}');
}
Future<void> _handleSetUserDefinedValues() async {
await TrackerManager.setUserDefinedValues("TEST_KEY", 'TEST_VALUE');
}
Future<void> _getUserDefinedValues() async {
final result = await TrackerManager.getUserDefinedValues();
debugPrint(result.toString());
}
Future<void> _handleSetNativeEventListener() async {
try {
await TrackerManager.setNativeEventListener((event) {
setState(() {
_nativeEvents.add(event);
_nativeEventListenerActive = true;
});
debugPrint('Native event received: $event');
});
setState(() {
_nativeEventListenerActive = true;
});
} catch (e) {
debugPrint('Error setting native event listener: $e');
}
}
Future<void> _handleRemoveNativeEventListener() async {
try {
await TrackerManager.removeNativeEventListener();
setState(() {
_nativeEventListenerActive = false;
});
} catch (e) {
debugPrint('Error removing native event listener: $e');
}
}
@override
void dispose() {
super.dispose();
}
}