mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-05-23 11:42:14 +00:00
debounce the search query
This commit is contained in:
parent
d8ff9fb01d
commit
c5c97d712b
1 changed files with 18 additions and 2 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue