From 2bc093f9f510ea2ae09d28e54614f937aa86ec92 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Wed, 31 Dec 2025 11:23:20 -0500 Subject: [PATCH] chore: add focus node to vocab list view search bar (#5011) --- .../analytics_details_popup.dart | 10 ++++++++++ .../vocab_analytics_list_view.dart | 1 + 2 files changed, 11 insertions(+) diff --git a/lib/pangea/analytics_details_popup/analytics_details_popup.dart b/lib/pangea/analytics_details_popup/analytics_details_popup.dart index bb7bd6ecc..16fca4898 100644 --- a/lib/pangea/analytics_details_popup/analytics_details_popup.dart +++ b/lib/pangea/analytics_details_popup/analytics_details_popup.dart @@ -41,6 +41,7 @@ class ConstructAnalyticsViewState extends State { List? vocab; bool isSearching = false; + FocusNode searchFocusNode = FocusNode(); ConstructLevelEnum? selectedConstructLevel; StreamSubscription? _constructUpdateSub; @@ -65,6 +66,7 @@ class ConstructAnalyticsViewState extends State { void dispose() { searchController.dispose(); _constructUpdateSub?.cancel(); + searchFocusNode.dispose(); super.dispose(); } @@ -141,6 +143,14 @@ class ConstructAnalyticsViewState extends State { selectedConstructLevel = null; searchController.clear(); }); + + WidgetsBinding.instance.addPostFrameCallback((_) { + if (isSearching) { + FocusScope.of(context).requestFocus(searchFocusNode); + } else { + searchFocusNode.unfocus(); + } + }); } @override diff --git a/lib/pangea/analytics_details_popup/vocab_analytics_list_view.dart b/lib/pangea/analytics_details_popup/vocab_analytics_list_view.dart index d2da896be..1aa9cfe58 100644 --- a/lib/pangea/analytics_details_popup/vocab_analytics_list_view.dart +++ b/lib/pangea/analytics_details_popup/vocab_analytics_list_view.dart @@ -125,6 +125,7 @@ class VocabAnalyticsListView extends StatelessWidget { Expanded( child: TextField( autofocus: true, + focusNode: controller.searchFocusNode, controller: controller.searchController, decoration: const InputDecoration( contentPadding: EdgeInsets.symmetric(