import 'dart:async'; import 'dart:developer'; import 'package:flutter/foundation.dart'; import 'package:lightmeter/data/analytics/api/analytics_api_interface.dart'; class LightmeterAnalytics { final ILightmeterAnalyticsApi _api; const LightmeterAnalytics({required ILightmeterAnalyticsApi api}) : _api = api; void init() { FlutterError.onError = (details) { if (details.silent) return; logCrash(details.exception, details.stack); }; PlatformDispatcher.instance.onError = (error, stack) { logCrash(error, stack); return true; }; } Future logEvent( String eventName, { Map? parameters, }) async { if (!kReleaseMode) { log(' logEvent: $eventName / $parameters'); return; } return _api.logEvent( eventName, parameters: parameters, ); } Future logCrash( dynamic exception, StackTrace? stackTrace, { dynamic reason, Iterable information = const [], }) async { log(exception.toString(), stackTrace: stackTrace); if (!kReleaseMode) { return; } return _api.logCrash( exception, stackTrace, reason: reason, information: information, ); } Future setCustomKey(String key, String value) async => _api.setCustomKey(key, value); }