analytics_flutter icon indicating copy to clipboard operation
analytics_flutter copied to clipboard

Enhance Firebase Analytics Integration: screen() & identify() Support Parameters and Traits Mapping

Open mohamedzakaria974 opened this issue 4 months ago • 2 comments

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.

mohamedzakaria974 avatar Jul 28 '25 08:07 mohamedzakaria974