From 6636da40f9ff2f9192110e678c3c7924b2a7defd Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Tue, 3 Jul 2018 00:38:16 +0200 Subject: [PATCH] Show Search Button on keyboard for search widget (#19011) Also: * Export TextInputAction from `text_field.dart` to parallel `TextInputType`. --- packages/flutter/lib/src/material/search.dart | 2 +- packages/flutter/lib/src/material/text_field.dart | 2 +- packages/flutter/test/material/search_test.dart | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/flutter/lib/src/material/search.dart b/packages/flutter/lib/src/material/search.dart index 6e9a5a7c6c..64e4b325b2 100644 --- a/packages/flutter/lib/src/material/search.dart +++ b/packages/flutter/lib/src/material/search.dart @@ -412,11 +412,11 @@ class _SearchPageState extends State<_SearchPage> { textTheme: theme.primaryTextTheme, brightness: theme.primaryColorBrightness, leading: widget.delegate.buildLeading(context), - // TODO(goderbauer): Show the search key (instead of enter) on keyboard, https://github.com/flutter/flutter/issues/17525 title: new TextField( controller: queryTextController, focusNode: widget.delegate._focusNode, style: theme.textTheme.title, + textInputAction: TextInputAction.search, onSubmitted: (String _) { widget.delegate.showResults(context); }, diff --git a/packages/flutter/lib/src/material/text_field.dart b/packages/flutter/lib/src/material/text_field.dart index f1f5247e6b..f974642125 100644 --- a/packages/flutter/lib/src/material/text_field.dart +++ b/packages/flutter/lib/src/material/text_field.dart @@ -17,7 +17,7 @@ import 'material.dart'; import 'text_selection.dart'; import 'theme.dart'; -export 'package:flutter/services.dart' show TextInputType; +export 'package:flutter/services.dart' show TextInputType, TextInputAction; /// A material design text field. /// diff --git a/packages/flutter/test/material/search_test.dart b/packages/flutter/test/material/search_test.dart index 27417e2179..15767d6859 100644 --- a/packages/flutter/test/material/search_test.dart +++ b/packages/flutter/test/material/search_test.dart @@ -463,6 +463,20 @@ void main() { expect(nestedSearchResults, [null]); expect(selectedResults, ['Result Foo']); }); + + testWidgets('keyboard show search button', (WidgetTester tester) async { + final _TestSearchDelegate delegate = new _TestSearchDelegate(); + + await tester.pumpWidget(new TestHomePage( + delegate: delegate, + )); + await tester.tap(find.byTooltip('Search')); + await tester.pumpAndSettle(); + + await tester.showKeyboard(find.byType(TextField)); + + expect(tester.testTextInput.setClientArgs['inputAction'], TextInputAction.search.toString()); + }); } class TestHomePage extends StatelessWidget {