From 4c35edea0c80e7b0f81fd650fcbc1bf2e3797780 Mon Sep 17 00:00:00 2001 From: Ye Min Naing Date: Wed, 6 Mar 2024 17:07:18 +0700 Subject: [PATCH] Add keyboard listener to URLField --- .../home_page/editor_pane/url_card.dart | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/screens/home_page/editor_pane/url_card.dart b/lib/screens/home_page/editor_pane/url_card.dart index 753fb34a..5b87a5ec 100644 --- a/lib/screens/home_page/editor_pane/url_card.dart +++ b/lib/screens/home_page/editor_pane/url_card.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:apidash/providers/providers.dart'; import 'package:apidash/widgets/widgets.dart'; @@ -103,18 +104,31 @@ class _URLTextFieldState extends ConsumerState { @override Widget build(BuildContext context) { final activeId = ref.watch(activeIdStateProvider); - return URLField( - activeId: activeId!, - initialValue: ref - .read(collectionStateNotifierProvider.notifier) - .getRequestModel(activeId) - ?.url, - onChanged: (value) { - ref - .read(collectionStateNotifierProvider.notifier) - .update(activeId, url: value); - }, - ); + return Focus( + autofocus: true, + child: KeyboardListener( + focusNode: FocusNode(), + onKeyEvent: (KeyEvent event) { + if (event is KeyDownEvent && + event.logicalKey == LogicalKeyboardKey.enter) { + ref + .read(collectionStateNotifierProvider.notifier) + .sendRequest(activeId); + } + }, + child: URLField( + activeId: activeId!, + initialValue: ref + .read(collectionStateNotifierProvider.notifier) + .getRequestModel(activeId) + ?.url, + onChanged: (value) { + ref + .read(collectionStateNotifierProvider.notifier) + .update(activeId, url: value); + }, + ), + )); } }