Skip to content

Commit 97ab01e

Browse files
committed
fix(analytics): prevent crashes in GoogleAnalyticsDataClient
- Use firstOrNull instead of first to avoid exceptions when lists are empty - Add null checks for dimensionValues and metricValues to ensure safe access - Update methods to handle cases where data might be missing without causing errors
1 parent c4c4186 commit 97ab01e

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

lib/src/services/analytics/google_analytics_data_client.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ class GoogleAnalyticsDataClient implements AnalyticsReportingClient {
9797

9898
return rows
9999
.map((row) {
100-
final dateStr = row.dimensionValues.first.value;
101-
final valueStr = row.metricValues.first.value;
100+
final dateStr = row.dimensionValues.firstOrNull?.value;
101+
final valueStr = row.metricValues.firstOrNull?.value;
102102
if (dateStr == null || valueStr == null) return null;
103103

104104
return DataPoint(
@@ -154,7 +154,7 @@ class GoogleAnalyticsDataClient implements AnalyticsReportingClient {
154154
return 0;
155155
}
156156

157-
final valueStr = rows.first.metricValues.first.value;
157+
final valueStr = rows.firstOrNull?.metricValues.firstOrNull?.value;
158158
return num.tryParse(valueStr ?? '0') ?? 0.0;
159159
}
160160

@@ -203,8 +203,8 @@ class GoogleAnalyticsDataClient implements AnalyticsReportingClient {
203203

204204
final rawItems = <RankedListItem>[];
205205
for (final row in rows) {
206-
final entityId = row.dimensionValues.first.value;
207-
final metricValueStr = row.metricValues.first.value;
206+
final entityId = row.dimensionValues.firstOrNull?.value;
207+
final metricValueStr = row.metricValues.firstOrNull?.value;
208208
if (entityId == null || metricValueStr == null) continue;
209209

210210
final metricValue = num.tryParse(metricValueStr) ?? 0;

0 commit comments

Comments
 (0)