printf function

void printf(
  1. Object? data, {
  2. Object? mapKey,
  3. int? listIndex,
  4. String? tag,
  5. PrintfLevel level = PrintfLevel.debug,
  6. Color? foreground,
  7. Color? background,
  8. bool italic = false,
  9. bool bold = false,
  10. bool underline = false,
  11. bool invert = false,
  12. bool strike = false,
  13. bool doubleUnderline = false,
  14. bool framed = false,
  15. bool? timestamp,
  16. bool? showFile,
  17. PrintfStyle? style,
  18. String? name,
  19. int stackTraceIndex = 1,
})

Prints data to the console with optional ANSI styling, tags, and metadata.

Pretty-prints Map/List and JSON strings. Use mapKey or listIndex to drill into nested structures before printing.

printf({'user': 'Ada'}, tag: 'AUTH', level: PrintfLevel.success);
printfError('Token expired');
printfSeparator(object: 'BOOT');

Implementation

void printf(
  Object? data, {
  Object? mapKey,
  int? listIndex,
  String? tag,
  PrintfLevel level = PrintfLevel.debug,
  Color? foreground,
  Color? background,
  bool italic = false,
  bool bold = false,
  bool underline = false,
  bool invert = false,
  bool strike = false,
  bool doubleUnderline = false,
  bool framed = false,
  bool? timestamp,
  bool? showFile,
  PrintfStyle? style,
  String? name,
  int stackTraceIndex = 1,
}) {
  if (!_shouldPrint(level)) return;

  final resolved = _resolvePayload(data, mapKey: mapKey, listIndex: listIndex);
  final message = _formatPayload(resolved);
  final prefix = _buildPrefix(
    level: level,
    tag: tag,
    timestamp: timestamp ?? PrintfConfig.showTimestamp,
    showFile: showFile ?? PrintfConfig.showCaller,
    stackTraceIndex: stackTraceIndex,
  );

  final appliedStyle = style ??
      (foreground != null ||
              background != null ||
              italic ||
              bold ||
              underline ||
              invert ||
              strike ||
              doubleUnderline ||
              framed
          ? PrintfStyle(
              foreground: foreground,
              background: background,
              italic: italic,
              bold: bold,
              underline: underline,
              invert: invert,
              strike: strike,
              doubleUnderline: doubleUnderline,
              framed: framed,
            )
          : level.defaultStyle);

  developer.log(
    '$prefix${appliedStyle.applyTo(message)}',
    name: name ?? PrintfConfig.logName,
    level: _developerLevel(level),
    stackTrace: _callerStackTrace(stackTraceIndex),
  );
}