masamune_logger_firebase 2.6.11 copy "masamune_logger_firebase: ^2.6.11" to clipboard
masamune_logger_firebase: ^2.6.11 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.

example/lib/main.dart

// Flutter imports:
import 'package:flutter/material.dart';

// Package imports:
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:masamune/masamune.dart';
import 'package:masamune_logger_firebase/masamune_logger_firebase.dart';

part 'main.freezed.dart';
part 'main.g.dart';

@freezed
@immutable
abstract class AnalyticsValue with _$AnalyticsValue implements Loggable {
  const factory AnalyticsValue({
    required String userId,
  }) = _AnalyticsValue;
  const AnalyticsValue._();

  factory AnalyticsValue.fromJson(Map<String, Object?> json) =>
      _$AnalyticsValueFromJson(json);

  @override
  String get name => runtimeType.toString();
}

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MasamuneApp(
      home: const PickerPage(),
      title: "Flutter Demo",
      theme: AppThemeData(
        primary: Colors.blue,
      ),
      masamuneAdapters: const [FirebaseLoggerMasamuneAdapter()],
    );
  }
}

class PickerPage extends StatefulWidget {
  const PickerPage({super.key});

  @override
  State<StatefulWidget> createState() => PickerPageState();
}

class PickerPageState extends State<PickerPage> {
  final logger = Logger();

  @override
  void initState() {
    super.initState();
    logger.addListener(_handledOnUpdate);
  }

  void _handledOnUpdate() {
    setState(() {});
  }

  @override
  void dispose() {
    super.dispose();
    logger.removeListener(_handledOnUpdate);
    logger.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("App Demo")),
      floatingActionButton: FloatingActionButton.extended(
        onPressed: () async {
          await logger
              .send(const AnalyticsValue(userId: "UserID"))
              .showIndicator(context);
        },
        label: const Text("Send Log"),
        icon: const Icon(Icons.add_a_photo),
      ),
    );
  }
}
copied to clipboard
0
likes
160
points
5.49k
downloads

Publisher

verified publishermathru.net

Weekly Downloads

2024.09.24 - 2025.04.08

Plug-in package to easily add Firebase Analytics, Performance and Crashlytics on Masamune Framework. The functionality is available by simply adding an Adapter.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

firebase_analytics, firebase_core, firebase_crashlytics, firebase_performance, flutter, katana_firebase, masamune, universal_platform

More

Packages that depend on masamune_logger_firebase