setupFlutterErrorTracking method

void setupFlutterErrorTracking()

Installs global Flutter error handlers that forward all uncaught errors to logger.

Call this once in main() after WidgetsFlutterBinding.ensureInitialized():

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MyService().setupFlutterErrorTracking();
  runApp(const MyApp());
}

Hooks installed:

  • FlutterError.onError — Flutter framework / widget build errors.
  • PlatformDispatcher.instance.onError — uncaught Dart async errors.

Any previously installed handler is preserved and called first.

Implementation

void setupFlutterErrorTracking() {
  final prevFlutter = FlutterError.onError;
  FlutterError.onError = (FlutterErrorDetails details) {
    prevFlutter?.call(details);
    unawaited(
      trackError(
        details.exception,
        stackTrace: details.stack,
        message: details.exceptionAsString(),
      ),
    );
  };

  final prevPlatform = PlatformDispatcher.instance.onError;
  PlatformDispatcher.instance.onError = (error, stack) {
    prevPlatform?.call(error, stack);
    unawaited(trackError(error, stackTrace: stack, fatal: true));
    return false;
  };
}