How to trigger experiments in Flutter?
Triggering Experiments
In your Flutter widget, you can trigger an experiment when the widget is initialized:
import 'package:flutter/material.dart';
import 'package:pipeguru_flutter/pipeguru_flutter.dart';
class MainScreen extends StatefulWidget {
@override
_MainScreenState createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreen> {
@override
void initState() {
super.initState();
// Trigger an experiment when the screen loads
PipeGuru.track('user_viewed_main_screen');
}
@override
Widget build(BuildContext context) {
return Scaffold(
// ...
);
}
}
You can also trigger an experiment based on a user action, like a button press:
import 'package:flutter/material.dart';
import 'package:pipeguru_flutter/pipeguru_flutter.dart';
class PricingScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
// Example properties for segmentation.
// 'braze_segments' is shown here as an example of passing custom data structures.
final brazeSegments = ['segment1', 'segment2'];
// This event can now be used to trigger an experiment from the PipeGuru dashboard
PipeGuru.track('user_viewed_pricing_page', properties: {
'plan': 'premium',
'user_level': 'power_user',
'gender': 'female',
'city': 'Berlin',
'country': 'Germany',
'braze_segments': brazeSegments
});
},
child: Text('Subscribe'),
),
),
);
}
}
To show an experiment directly, you can use the showExperiment method:
import 'package:flutter/material.dart';
import 'package:pipeguru_flutter/pipeguru_flutter.dart';
class MainScreen extends StatefulWidget {
@override
_MainScreenState createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreen> {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
final brazeSegments = ['segment1', 'segment2'];
// Directly show an experiment. This method requires a BuildContext
// to present the experiment UI (e.g., as a new screen or dialog).
PipeGuru.showExperiment('new_user_onboarding', context: context, properties: {
'plan': 'premium',
'user_level': 'power_user',
'gender': 'female',
'city': 'Berlin',
'country': 'Germany',
'braze_segments': brazeSegments
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
// ...
);
}
}