From af482ab9e369bb24f927756d872b49f52ba022e1 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Sat, 6 Sep 2025 22:46:13 +0200 Subject: [PATCH] Set a debounce time for TypeAhead-fields (exercises and ingredients) --- lib/widgets/exercises/autocompleter.dart | 1 + lib/widgets/nutrition/widgets.dart | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/widgets/exercises/autocompleter.dart b/lib/widgets/exercises/autocompleter.dart index f0b9d513e..133deb035 100644 --- a/lib/widgets/exercises/autocompleter.dart +++ b/lib/widgets/exercises/autocompleter.dart @@ -30,6 +30,7 @@ class _ExerciseAutocompleterState extends State { children: [ TypeAheadField( key: const Key('field-typeahead'), + debounceDuration: const Duration(milliseconds: 500), decorationBuilder: (context, child) { return Material( type: MaterialType.card, diff --git a/lib/widgets/nutrition/widgets.dart b/lib/widgets/nutrition/widgets.dart index 730c97870..74910639d 100644 --- a/lib/widgets/nutrition/widgets.dart +++ b/lib/widgets/nutrition/widgets.dart @@ -113,6 +113,7 @@ class _IngredientTypeaheadState extends State { children: [ TypeAheadField( controller: widget._ingredientController, + debounceDuration: const Duration(milliseconds: 500), builder: (context, controller, focusNode) { return TextFormField( controller: controller, @@ -124,11 +125,6 @@ class _IngredientTypeaheadState extends State { } return null; }, - onChanged: (value) { - widget.updateSearchQuery(value); - // unselect to start a new search - widget.unSelectIngredient(); - }, decoration: InputDecoration( prefixIcon: const Icon(Icons.search), labelText: AppLocalizations.of(context).searchIngredient, @@ -142,6 +138,10 @@ class _IngredientTypeaheadState extends State { return null; } + widget.updateSearchQuery(pattern); + // unselect to start a new search + widget.unSelectIngredient(); + return Provider.of(context, listen: false).searchIngredient( pattern, languageCode: Localizations.localeOf(context).languageCode,