Fehler-Monitoring für Flutter.

Mit sentry_flutter meldet deine App Abstürze und Fehler aus Dart und nativem Code an Fehlo, auf Android, iOS und im Web.

Stand: 24.10.2026, sentry_flutter 10.2.0 und sentry_dart_plugin 3.4.0. Das Dart-SDK haben wir noch nicht selbst gegen Fehlo laufen lassen.

1. Paket eintragen

Version 10 braucht Flutter ab 3.44, Dart ab 3.12, Android ab minSdk 26 und iOS ab 15, und sie nutzt auf iOS den Swift Package Manager statt CocoaPods. Für ältere Projekte bleibst du bei sentry_flutter 9.30.1 (Flutter ab 3.24).

pubspec.yaml
dependencies:
  sentry_flutter: ^10.2.0

dev_dependencies:
  sentry_dart_plugin: ^3.4.0

sentry:
  url: https://app.fehlo.de/
  org: <organisation-slug>
  project: <project-slug>
  upload_debug_symbols: true
  upload_source_maps: true

Danach flutter pub get. Der Block sentry: ist nur für den Upload der Debug-Symbole; url zeigt ihn auf Fehlo.

2. SDK starten

lib/main.dart
import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

Future<void> main() async {
  await SentryFlutter.init(
    (options) {
      options.dsn = 'https://<key>@app.fehlo.de/<project-id>';
      options.environment = 'production';
      options.release = 'my-app@1.0.0+1';
    },
    appRunner: () => runApp(
      SentryWidget(
        child: MyApp(),
      ),
    ),
  );
}

Das Beispiel in Sentrys Dokumentation setzt options.sendDefaultPii = true. Lass die Zeile weg: Standard ist false, dann gehen keine IP-Adresse, kein Nutzer und kein Gerätename mit. DSN, Release und Umgebung kannst du auch beim Build mit --dart-define=SENTRY_DSN=... übergeben.

3. Testen

Dart
try {
  throw StateError('Fehlo test error');
} catch (exception, stackTrace) {
  await Sentry.captureException(exception, stackTrace: stackTrace);
}

Löse das zum Beispiel über einen Knopf aus. Der Fehler erscheint in Fehlo mit Stacktrace, Gerät und Betriebssystem.

4. Debug-Symbole hochladen

Release-Builds von Flutter enthalten keine lesbaren Funktionsnamen, wenn du die Debug-Informationen abtrennst. Das Plugin lädt sie nach dem Build zu Fehlo hoch, für Flutter Web die Source Maps:

Terminal
export SENTRY_AUTH_TOKEN=<token>

flutter build apk --split-debug-info=build/debug-info
flutter pub run sentry_dart_plugin

flutter build web --release --source-maps
flutter pub run sentry_dart_plugin

Das Token legst du in Fehlo unter Einstellungen, API-Tokens an, mit der Vorlage „Für Source Maps“. Organisation und Projekt stehen in der Adresszeile der Projekteinstellungen: /<organisation>/settings/projects/<projekt>. Native Debug-Symbole (ELF, dSYM) verarbeitet Fehlo. Ob Fehlo auch die Zuordnung für --obfuscate auswertet, haben wir nicht getestet; lass die Option weg, bis du es mit einem Testfehler geprüft hast. Den Assistenten sentry-wizard -i flutter brauchst du nicht, er meldet sich bei sentry.io an.

Häufige Fragen

Welche Version nehme ich?

sentry_flutter 10, wenn dein Projekt Flutter 3.44 und Dart 3.12 oder neuer nutzt. Sonst 9.30.1. Beide schicken an Fehlo, du änderst nur den DSN.

Funktioniert das mit Flutter Web?

Ja. Für lesbare Stacktraces baust du mit --source-maps und lädst die Maps mit dem Plugin hoch (upload_source_maps: true).

Es kommt nichts an. Was prüfe ich?

Erstens den DSN: Er muss auf app.fehlo.de zeigen. Zweitens, ob dein Server oder Browser https://app.fehlo.de erreicht (Firewall, Proxy, Werbeblocker). Drittens, ob dein Kontingent für den Monat aufgebraucht ist; dann bekommst du eine Mail. Viertens, ob sampleRate oder beforeSend Ereignisse verwirft. Fehlen nur Performance-Daten, sind vielleicht die Transaktionen des Monats aufgebraucht.