fix: no redundant search queries
This commit is contained in:
@@ -28,6 +28,7 @@ class _SearchScreenState extends State<SearchScreen>
|
|||||||
bool _isSearching = false;
|
bool _isSearching = false;
|
||||||
bool _hasSearched = false;
|
bool _hasSearched = false;
|
||||||
Timer? _debounceTimer;
|
Timer? _debounceTimer;
|
||||||
|
String _lastSearchedQuery = '';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
@@ -54,10 +55,16 @@ class _SearchScreenState extends State<SearchScreen>
|
|||||||
_searchResults = [];
|
_searchResults = [];
|
||||||
_hasSearched = false;
|
_hasSearched = false;
|
||||||
_isSearching = false;
|
_isSearching = false;
|
||||||
|
_lastSearchedQuery = '';
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Only search if the query has actually changed
|
||||||
|
if (query.trim() == _lastSearchedQuery.trim()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Start new timer
|
// Start new timer
|
||||||
_debounceTimer = Timer(const Duration(milliseconds: 500), () {
|
_debounceTimer = Timer(const Duration(milliseconds: 500), () {
|
||||||
_performSearch(query);
|
_performSearch(query);
|
||||||
@@ -84,6 +91,7 @@ class _SearchScreenState extends State<SearchScreen>
|
|||||||
setState(() {
|
setState(() {
|
||||||
_searchResults = results;
|
_searchResults = results;
|
||||||
_isSearching = false;
|
_isSearching = false;
|
||||||
|
_lastSearchedQuery = query.trim();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user