debounce the search query

This commit is contained in:
NBA2K1 2026-04-12 16:42:02 +02:00
parent d8ff9fb01d
commit c5c97d712b

View file

@ -1,5 +1,6 @@
// ignore_for_file: use_build_context_synchronously
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:mangayomi/main.dart';
@ -54,6 +55,7 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen>
final _textEditingController = TextEditingController();
TabController? tabBarController;
int _tabIndex = 0;
Timer? _searchDebounce;
@override
void initState() {
@ -68,6 +70,7 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen>
void dispose() {
_textEditingController.dispose();
tabBarController?.dispose();
_searchDebounce?.cancel;
super.dispose();
}
@ -266,7 +269,15 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen>
textEditingController: _textEditingController,
onSearchToggle: () =>
setState(() => _isSearch = !_isSearch),
onSearchClear: () => setState(() {}),
onSearchClear: () {
_searchDebounce?.cancel();
_searchDebounce = Timer(
const Duration(milliseconds: 300),
() {
if (mounted) setState(() {});
},
);
},
onIgnoreFiltersChanged: (val) =>
setState(() => _ignoreFiltersOnSearch = val),
vsync: this,
@ -346,7 +357,12 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen>
ignoreFiltersOnSearch: _ignoreFiltersOnSearch,
textEditingController: _textEditingController,
onSearchToggle: () => setState(() => _isSearch = !_isSearch),
onSearchClear: () => setState(() {}),
onSearchClear: () {
_searchDebounce?.cancel();
_searchDebounce = Timer(const Duration(milliseconds: 300), () {
if (mounted) setState(() {});
});
},
onIgnoreFiltersChanged: (val) =>
setState(() => _ignoreFiltersOnSearch = val),
vsync: this,