search method

void search(
  1. String query,
  2. dynamic searchAction(
    1. String
    )
)

Execute search with query-specific optimizations

Implementation

void search(String query, Function(String) searchAction) {
  // Skip debouncing for very short queries (instant results)
  if (query.length <= 1) {
    cancel();
    searchAction(query);
    return;
  }

  // Check if we've seen this query recently (cache hit)
  final now = DateTime.now();
  if (_queryHistory.containsKey(query)) {
    final lastSeen = _queryHistory[query]!;
    if (now.difference(lastSeen) < const Duration(seconds: 10)) {
      // Recent query - execute immediately
      cancel();
      searchAction(query);
      return;
    }
  }

  // Use adaptive debouncing for new/old queries
  call(() {
    searchAction(query);
    _updateQueryHistory(query, now);
  });
}