flutter_crashlytics 1.0.0 copy "flutter_crashlytics: ^1.0.0" to clipboard
flutter_crashlytics: ^1.0.0 copied to clipboard

Flutter plugin to enable Crashlytics reporting on Android and iOS, also offer the ability to add custom log and informations to the reports.

example/lib/main.dart

import 'dart:async';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_crashlytics/flutter_crashlytics.dart';

void main() async {
  bool isInDebugMode = false;
  profile(() {
    // isInDebugMode=true;
  });

  FlutterError.onError = (FlutterErrorDetails details) {
    if (isInDebugMode) {
      // In development mode simply print to console.
      FlutterError.dumpErrorToConsole(details);
      Zone.current.handleUncaughtError(details.exception, details.stack);
    } else {
      // In production mode report to the application zone to report to
      // Crashlytics.
      Zone.current.handleUncaughtError(details.exception, details.stack);
    }
  };

  bool optIn = true;
  if (optIn) {
    await FlutterCrashlytics().initialize();
    FlutterCrashlytics().setUserInfo('test1', 'test@test.com', 'tester');
  } else {
    // In this case Crashlytics won't send any reports.
    // Usually handling opt in/out is required by the Privacy Regulations
  }

  runZoned<Future<Null>>(() async {
    runApp(MyApp());
  }, onError: (error, stackTrace) async {
    // Whenever an error occurs, call the `reportCrash` function. This will send
    // Dart errors to our dev console or Crashlytics depending on the environment.
    debugPrint(error.toString());
    await FlutterCrashlytics().reportCrash(error, stackTrace, forceCrash: true);
  });
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            Center(
              child: RaisedButton(
                onPressed: () {
                  final crash = List()[69];
                  debugPrint(crash);
                },
                child: Text('Crash'),
              ),
            ),
            Center(
              child: RaisedButton(
                onPressed: () {
                  try {
                    final crash = List()[144];
                    debugPrint(crash);
                  } catch (error) {
                    debugPrint(error.toString());
                    FlutterCrashlytics().log('My loogggg', priority: 200, tag: 'test');
                    FlutterCrashlytics().logException(error, error.stackTrace);
                  }
                },
                child: Text('Manual error log'),
              ),
            ),
            Center(
              child: RaisedButton(
                onPressed: () {
                  try {
                    throw new FormatException();
                  } catch (exception, stack) {
                    debugPrint(exception.toString());
                    FlutterCrashlytics().logException(exception, stack);
                  }
                },
                child: Text('Manual exception log'),
              ),
            ),
          ],
        ),
      ),
    );
  }
}
25
likes
40
points
29
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter plugin to enable Crashlytics reporting on Android and iOS, also offer the ability to add custom log and informations to the reports.

Repository (GitHub)
View/report issues

License

BSD-2-Clause (license)

Dependencies

flutter, stack_trace

More

Packages that depend on flutter_crashlytics