amplitude_engagement_flutter 0.0.4
amplitude_engagement_flutter: ^0.0.4 copied to clipboard
Official Amplitude Engagement Flutter SDK, supporting Android, iOS
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:amplitude_engagement_flutter/amplitude_engagement.dart';
import 'package:amplitude_flutter/amplitude.dart';
import 'package:amplitude_flutter/configuration.dart';
import 'package:amplitude_flutter/constants.dart';
import 'package:amplitude_flutter/default_tracking.dart';
// Global API key configuration
const String amplitudeApiKey = '6dba5c25868be3716e69f525035e33b6';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Amplitude Engagement Flutter Demo',
theme: ThemeData(primarySwatch: Colors.blue),
home: const MyHomePage(title: 'Amplitude Engagement Demo'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
late Amplitude analytics;
late AmplitudeEngagement engagement;
@override
void initState() {
super.initState();
// _setupAmplitudeEngagement();
analytics = Amplitude(
Configuration(
apiKey: amplitudeApiKey,
logLevel: LogLevel.debug,
defaultTracking: DefaultTrackingOptions.all(),
),
);
engagement = AmplitudeEngagement(
amplitudeApiKey,
options: AmplitudeInitOptions(
logLevel: AmplitudeLogLevel.debug,
serverZone: AmplitudeServerZone.us,
// Optional: Set custom URLs for proxy support
// serverUrl: 'https://your-proxy.com',
// cdnUrl: 'https://your-cdn.com',
// mediaUrl: 'https://your-media.com',
// locale: 'en',
),
);
engagement.addCallback("test", () {
debugPrint('Callback Invoked: test');
});
engagement.boot(userId: 'user123', deviceId: 'device456');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(widget.title)),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const SizedBox(height: 16),
Wrap(
spacing: 8,
runSpacing: 8,
children: [
ElevatedButton(
onPressed: () => engagement.list(),
child: const Text('Refresh Guides'),
),
ElevatedButton(
onPressed: () => engagement.screen('home_screen'),
child: const Text('Track Screen'),
),
ElevatedButton(
onPressed: () => engagement.addCallback('test', () {
debugPrint('Callback Invoked: test');
}),
child: const Text('Add Callback'),
),
ElevatedButton(
onPressed: () => engagement.closeAll(),
child: const Text('Close All'),
),
ElevatedButton(
onPressed: () => engagement.handleURL('https://example.com'),
child: const Text('Handle URL'),
),
ElevatedButton(
onPressed: () =>
engagement.forwardEvent({'event_type': 'test'}),
child: const Text('Forward Event'),
),
],
),
],
),
),
);
}
}