generateTextMessage method

  1. @override
String generateTextMessage({
  1. TimeFormat timeFormat = TimeFormat.timeAndSeconds,
})

Internal method that generates a complete message about the event

See examples: TalkerLog -> TalkerLog.generateTextMessage TalkerException -> TalkerException.generateTextMessage TalkerError -> TalkerError.generateTextMessage

Implementation

@override
String generateTextMessage({
  TimeFormat timeFormat = TimeFormat.timeAndSeconds,
}) {
  final StringBuffer msg = StringBuffer();
  msg.write('[$title]');
  msg.write(' [${response.request?.method}]');
  msg.writeln(' $message');

  final String? data = switch (response) {
    Response res => res.body,
    _ => null,
  };

  msg.writeln('Status: ${response.statusCode}');

  if (settings.printResponseTime) {
    final int? responseTime = getResponseTime(response.headers) ??
        getResponseTime(response.request?.headers);

    if (responseTime != null) {
      msg.writeln('Time: $responseTime ms');
    }
  }

  if (settings.printResponseMessage && response.reasonPhrase != null) {
    msg.writeln('Message: ${response.reasonPhrase}');
  }

  if (settings.printResponseHeaders && response.headers.isNotEmpty) {
    try {
      msg.writeln('Headers: ${convert(response.headers)}');
    } catch (error, stackTrace) {
      msg.writeln(
        'Headers: <failed to convert headers: $error\nstackTrace: $stackTrace>',
      );
    }
  }

  if (settings.printResponseRedirects && response.isRedirect) {
    msg.writeln('Redirect: ${response.isRedirect}');
  }

  if (settings.printResponseData && (data?.isNotEmpty ?? false)) {
    try {
      msg.writeln('Data: ${convert(jsonDecode(data!))}');
    } on FormatException {
      msg.writeln('Data: ${convert(data)}');
    } catch (error, stackTrace) {
      msg.writeln(
        'Data: <failed to convert data: $error\nstackTrace: $stackTrace>',
      );
    }
  }

  return msg.toString().trimRight();
}