LCOV - code coverage report
Current view: top level - src/utils - debouncer_logger.dart Coverage Total Hit
Test: lcov.info Lines: 100.0 % 11 11
Test Date: 2026-04-18 12:40:21 Functions: - 0 0

            Line data    Source code
       1              : // ignore_for_file: avoid_print
       2              : 
       3              : /// Log levels used by [DebouncerLogger].
       4              : enum DebouncerLogLevel {
       5              :   /// Only log when an action fires.
       6              :   fire,
       7              : 
       8              :   /// Log fire and cancel events.
       9              :   verbose,
      10              : 
      11              :   /// Log everything including timer resets.
      12              :   debug,
      13              : }
      14              : 
      15              : /// Optional logger you can attach to a [Debouncer] for debugging.
      16              : ///
      17              : /// In release builds you should either omit the logger or set
      18              : /// [enabled] to `false` to avoid any performance overhead.
      19              : ///
      20              : /// Example:
      21              : /// ```dart
      22              : /// final debouncer = Debouncer(
      23              : ///   delay: Duration(milliseconds: 300),
      24              : ///   logger: DebouncerLogger(level: DebouncerLogLevel.verbose),
      25              : /// );
      26              : /// ```
      27              : class DebouncerLogger {
      28              :   /// The minimum log level to output.
      29              :   final DebouncerLogLevel level;
      30              : 
      31              :   /// Whether logging is active. Defaults to `true` in debug mode.
      32              :   final bool enabled;
      33              : 
      34              :   /// Optional prefix prepended to every log line.
      35              :   final String prefix;
      36              : 
      37            1 :   const DebouncerLogger({
      38              :     this.level = DebouncerLogLevel.verbose,
      39              :     this.enabled = true,
      40              :     this.prefix = '[Debouncer]',
      41              :   });
      42              : 
      43            1 :   void logFire(String? label) {
      44            1 :     if (!enabled) return;
      45            2 :     _log('▶ fired${label != null ? ' ($label)' : ''}');
      46              :   }
      47              : 
      48            1 :   void logCancel(String? label) {
      49            3 :     if (!enabled || level == DebouncerLogLevel.fire) return;
      50            2 :     _log('✕ cancelled${label != null ? ' ($label)' : ''}');
      51              :   }
      52              : 
      53            1 :   void logReset(String? label, Duration delay) {
      54            3 :     if (!enabled || level != DebouncerLogLevel.debug) return;
      55            3 :     _log('↺ reset${label != null ? ' ($label)' : ''} — next fire in ${delay.inMilliseconds}ms');
      56              :   }
      57              : 
      58            4 :   void _log(String message) => print('$prefix $message');
      59              : }
        

Generated by: LCOV version 2.4-0