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);
    logger.log(
      LogLevel.error,
      details.exceptionAsString(),
      error: details.exception,
      stackTrace: details.stack,
      context: trackerContext,
    );
  };

  PlatformDispatcher.instance.onError = (Object error, StackTrace stack) {
    logger.log(
      LogLevel.fatal,
      error.toString(),
      error: error,
      stackTrace: stack,
      context: trackerContext,
    );
    return false;
  };
}