masamune_logger_firebase 3.1.6
masamune_logger_firebase: ^3.1.6 copied to clipboard
Plug-in package to easily add Firebase Analytics, Performance and Crashlytics on Masamune Framework. The functionality is available by simply adding an Adapter.
Masamune Logger Firebase
[GitHub] | [YouTube] | [Packages] | [X] | [LinkedIn] | [mathru.net]
Masamune Logger Firebase #
Usage #
Installation #
Add the package to your project.
flutter pub add masamune_logger_firebase
Run flutter pub get after editing pubspec.yaml manually.
Register the Adapter #
Set up FirebaseLoggerMasamuneAdapter before running the app. This adapter provides both logging (FirebaseLoggerAdapter) and integration with Firebase services.
// lib/adapter.dart
import 'package:masamune/masamune.dart';
import 'package:masamune_logger_firebase/masamune_logger_firebase.dart';
/// Logger adapters used by the application.
final loggerAdapters = <LoggerAdapter>[
const FirebaseLoggerAdapter(), // Add Firebase logger
];
/// Masamune adapters used by the application.
final masamuneAdapters = <MasamuneAdapter>[
const UniversalMasamuneAdapter(),
const FirebaseLoggerMasamuneAdapter(
options: DefaultFirebaseOptions.currentPlatform, // From firebase_options.dart
),
];
Key Features:
- Initializes Firebase automatically
- Attaches Crashlytics error handling to
FlutterErrorandPlatformDispatcher - Adds navigation observers for automatic screen tracking
- Exposes
FirebaseAnalytics,FirebaseCrashlytics, andFirebasePerformanceinstances
Access the adapter via FirebaseLoggerMasamuneAdapter.primary.
Logging Events #
Use the logger API to send events to Firebase Analytics. The package provides pre-built loggable classes for common events.
Sign-In Events:
// Get the logger from your controller or page
final logger = LoggerAdapter.primary.first;
// Log user sign-in
await logger.send(const FirebaseAnalyticsSignInLoggable(
userId: "user_123",
providerId: "google.com",
));
// Log user registration
await logger.send(const FirebaseAnalyticsRegisterLoggable(
userId: "user_456",
));
Purchase Events:
await logger.send(const FirebaseAnalyticsPurchasedLoggable(
transactionId: "order-001",
currency: "USD",
price: 9.99,
products: [
FirebaseAnalyticsPurchaseProduct(
id: "sku-1",
name: "Premium Plan",
price: 9.99,
quantity: 1,
),
],
));
Tutorial Events:
// Tutorial started
await logger.send(const FirebaseAnalyticsTutorialStartLoggable());
// Tutorial completed
await logger.send(const FirebaseAnalyticsTutorialEndLoggable());
Performance Monitoring #
Use performance traces to measure operation durations:
final logger = LoggerAdapter.primary.first;
// Start a trace
final trace = logger.trace("load_profile");
await trace.start();
// Execute the operation you want to measure
await loadUserProfile();
// Stop the trace
await trace.stop();
Crashlytics #
Crash reports are captured automatically when the adapter is registered. The adapter hooks into FlutterError.onError and PlatformDispatcher.onError.
Test Crashlytics Integration:
// Force a test crash (only for testing!)
final logger = FirebaseLoggerAdapter.primary;
await logger.crash();
Manual Error Reporting:
try {
// Your code
} catch (e, stackTrace) {
await FirebaseCrashlytics.instance.recordError(e, stackTrace);
}
GitHub Sponsors #
Sponsors are always welcome. Thank you for your support!