analytics_flutter
analytics_flutter copied to clipboard
Enhance Firebase Analytics Integration: screen() & identify() Support Parameters and Traits Mapping
Summary This PR improves the Firebase Analytics integration by enriching both screen() and identify() tracking methods to support dynamic parameters and user traits through transformation and casting utilities.
Changes 1. screen() method enhancement Before:
FirebaseAnalytics.instance
.logScreenView(screenClass: event.name, screenName: event.name);
After:
final transformedProperties = recurseMapper(event.properties, mappings);
final parameters = castParameterType(transformedProperties as Map<String, Object?>);
FirebaseAnalytics.instance.logScreenView(
screenClass: event.name,
screenName: event.name,
parameters: parameters,
);
Benefit: Allows sending contextual parameters along with screen view events for improved analytics segmentation and insight.
2. identify() method enhancement Before:
if (event.userId != null) {
await FirebaseAnalytics.instance.setUserId(id: event.userId!);
}
if (event.traits != null) {
await Future.wait(event.traits!.toJson().entries.map((entry) async {
await FirebaseAnalytics.instance
.setUserProperty(name: entry.key, value: entry.value.toString());
}));
}
After:
if (event.userId != null) {
await FirebaseAnalytics.instance.setUserId(id: event.userId);
}
if (event.traits != null) {
final transformedTraits = recurseMapper(event.traits?.toJson(), mappings);
final userProperties = castParameterType(transformedTraits as Map<String, Object?>);
for (final entry in userProperties.entries) {
await FirebaseAnalytics.instance.setUserProperty(
name: entry.key,
value: entry.value.toString(),
);
}
}
Benefit: Supports transformation and validation of user traits before passing them to Firebase, enabling cleaner, more structured analytics data.
Why This Matters These enhancements make analytics events more meaningful and flexible by allowing structured data mapping. This helps downstream analysis, segmentation, and personalization in Firebase and related analytics tools.