diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index 1d076a6ebb07..af7713fdf706 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -325,7 +325,6 @@ final Set _knownMissingTests = { 'examples/api/test/material/flexible_space_bar/flexible_space_bar.0_test.dart', 'examples/api/test/material/chip/deletable_chip_attributes.on_deleted.0_test.dart', 'examples/api/test/material/expansion_panel/expansion_panel_list.expansion_panel_list_radio.0_test.dart', - 'examples/api/test/material/text_form_field/text_form_field.1_test.dart', 'examples/api/test/material/scrollbar/scrollbar.1_test.dart', 'examples/api/test/material/search_anchor/search_anchor.0_test.dart', 'examples/api/test/material/search_anchor/search_anchor.1_test.dart', diff --git a/examples/api/test/material/text_form_field/text_form_field.1_test.dart b/examples/api/test/material/text_form_field/text_form_field.1_test.dart new file mode 100644 index 000000000000..e15d6f711f25 --- /dev/null +++ b/examples/api/test/material/text_form_field/text_form_field.1_test.dart @@ -0,0 +1,58 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_api_samples/material/text_form_field/text_form_field.1.dart' as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('Pressing space should focus the next field', (WidgetTester tester) async { + await tester.pumpWidget(const example.TextFormFieldExampleApp()); + final Finder textFormField = find.byType(TextFormField); + + expect(textFormField, findsExactly(5)); + + final Finder editableText = find.byType(EditableText); + expect(editableText, findsExactly(5)); + + List getFocuses() { + return editableText.evaluate() + .map((Element finderResult) => (finderResult.widget as EditableText).focusNode.hasFocus) + .toList(); + } + + expect(getFocuses(), const [false, false, false, false, false]); + + await tester.tap(textFormField.first); + await tester.pump(); + + expect(getFocuses(), const [true, false, false, false, false]); + + await tester.sendKeyEvent(LogicalKeyboardKey.space); + await tester.pump(); + + expect(getFocuses(), const [false, true, false, false, false]); + + await tester.sendKeyEvent(LogicalKeyboardKey.space); + await tester.pump(); + + expect(getFocuses(), const [false, false, true, false, false]); + + await tester.sendKeyEvent(LogicalKeyboardKey.space); + await tester.pump(); + + expect(getFocuses(), const [false, false, false, true, false]); + + await tester.sendKeyEvent(LogicalKeyboardKey.space); + await tester.pump(); + + expect(getFocuses(), const [false, false, false, false, true]); + + await tester.sendKeyEvent(LogicalKeyboardKey.space); + await tester.pump(); + + expect(getFocuses(), const [true, false, false, false, false]); + }); +}