import 'dart:async'; class PrefetchDebouncer { PrefetchDebouncer({ required this.onPrefetch, this.delay = const Duration(milliseconds: 700), }); final Future Function(String host) onPrefetch; final Duration delay; Timer? _timer; bool _disposed = false; void schedule(String rawHost) { if (_disposed) return; _timer?.cancel(); final host = rawHost.trim(); if (host.isEmpty) return; _timer = Timer(delay, () { if (_disposed) return; unawaited(onPrefetch(host)); }); } void dispose() { _disposed = true; _timer?.cancel(); _timer = null; } }