Use this library in your Dart programs (Flutter for mobile, Flutter for web, command-line, and AngularDart) to report errors thrown by your program to https://sentry.io error tracking service.
Versions 4.0.0
and higher support Flutter (mobile, web, desktop),
command-line/server Dart VM, and AngularDart.
Versions below 4.0.0
are deprecated.
Sign up for a Sentry.io account and get a DSN at http://sentry.io.
Add sentry
dependency to your pubspec.yaml
:
dependencies:
sentry: ">=4.0.0 <5.0.0"
In your Dart code, import package:sentry/sentry.dart
and create a SentryClient
using the DSN issued by Sentry.io:
import 'package:sentry/sentry.dart';
final SentryClient sentry = new SentryClient(dsn: YOUR_DSN);
In an exception handler, call captureException()
:
main() async {
try {
doSomethingThatMightThrowAnError();
} catch(error, stackTrace) {
await sentry.captureException(
exception: error,
stackTrace: stackTrace,
);
}
}
-
Use a
try/catch
block, like in the example above. -
Create a
Zone
with an error handler, e.g. using runZonedGuarded.var sentry = SentryClient(dsn: "https://..."); // Run the whole app in a zone to capture all uncaught errors. runZonedGuarded( () => runApp(MyApp()), (error, stackTrace) { try { sentry.captureException( exception: error, stackTrace: stackTrace, ); print('Error sent to sentry.io: $error'); } catch (e) { print('Sending report to sentry.io failed: $e'); print('Original error: $error'); } }, );
-
For Flutter-specific errors (such as layout failures), use FlutterError.onError. For example:
var sentry = SentryClient(dsn: "https://..."); FlutterError.onError = (details, {bool forceReport = false}) { try { sentry.captureException( exception: details.exception, stackTrace: details.stack, ); } catch (e) { print('Sending report to sentry.io failed: $e'); } finally { // Also use Flutter's pretty error logging to the device's console. FlutterError.dumpErrorToConsole(details, forceReport: forceReport); } };
-
Use
Isolate.current.addErrorListener
to capture uncaught errors in the root zone.
Please file it at https://github.com/flutter/flutter/issues/new