search method
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);
});
}