search method
Waits for a short pause in typing so each keystroke doesn't re-search every body; clearing applies at once.
Implementation
void search(String value) {
_debounceTimer?.cancel();
final needle = value.trim().isEmpty ? '' : value.toLowerCase();
if (needle.isEmpty) {
_apply('');
} else {
_debounceTimer = Timer(_debounce, () => _apply(needle));
}
}