Skip to content

Conversation

mohamedzakaria974
Copy link

@mohamedzakaria974 mohamedzakaria974 commented Jul 28, 2025

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant