debugInterceptor static method

Interceptor debugInterceptor({
  1. bool logRequest = true,
  2. bool logResponse = true,
  3. bool logHeaders = true,
  4. bool logBody = true,
  5. String prefix = '[Google Maps API]',
})

Creates a debug interceptor that logs all requests and responses

This interceptor will log:

  • Request method and URL
  • Request headers
  • Request body (if present)
  • Query parameters (if present)
  • Response status code and headers
  • Response body (if present)

Implementation

static Interceptor debugInterceptor({
  bool logRequest = true,
  bool logResponse = true,
  bool logHeaders = true,
  bool logBody = true,
  String prefix = '[Google Maps API]',
}) {
  return InterceptorsWrapper(
    onRequest: (options, handler) {
      if (logRequest) {
        print('🌐 $prefix ${options.method} ${options.uri}');
        if (logHeaders) {
          print('📋 $prefix Headers: ${options.headers}');
        }
        if (logBody && options.data != null) {
          print('📦 $prefix Body: ${options.data}');
        }
        if (options.queryParameters.isNotEmpty) {
          print('🔍 $prefix Query Params: ${options.queryParameters}');
        }
      }
      handler.next(options);
    },
    onResponse: (response, handler) {
      if (logResponse) {
        print(
          '✅ $prefix ${response.statusCode} ${response.requestOptions.uri}',
        );
        if (logHeaders) {
          print('📋 $prefix Response Headers: ${response.headers}');
        }
        if (logBody && response.data != null) {
          print('📦 $prefix Response Body: ${response.data}');
        }
      }
      handler.next(response);
    },
    onError: (error, handler) {
      print(
        '❌ $prefix Error ${error.response?.statusCode} ${error.requestOptions.uri}',
      );
      if (error.response?.data != null) {
        print('📦 $prefix Error Body: ${error.response?.data}');
      }
      handler.next(error);
    },
  );
}