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 3.0.0 and higher support Flutter for mobile, Flutter for web,
command-line, desktop, and AngularDart.
>=2.0.0 <3.0.0 is the range of versions that support Flutter for mobile and
Dart VM only.
Versions <2.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: >=3.0.0 <4.0.0In 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/catchblock, like in the example above. -
Create a
Zonewith an error handler, e.g. using runZoned.var sentry = SentryClient(dsn: "https://..."); // Run the whole app in a zone to capture all uncaught errors. runZoned( () => runApp(MyApp()), onError: (Object error, StackTrace 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.addErrorListenerto capture uncaught errors in the root zone.
Please file it at https://github.com/flutter/flutter/issues/new