showKeyboard method
- FinderBase<
Element> finder
Give the text input widget specified by finder the focus, as if the
onscreen keyboard had appeared.
Implies a call to pump.
The widget specified by finder must be an EditableText or have
an EditableText descendant. For example find.byType(TextField)
or find.byType(TextFormField), or find.byType(EditableText).
Tests that just need to add text to widgets like TextField or TextFormField only need to call enterText.
Implementation
Future<void> showKeyboard(FinderBase<Element> finder) async {
bool skipOffstage = true;
if (finder is Finder) {
skipOffstage = finder.skipOffstage;
}
return TestAsyncUtils.guard<void>(() async {
final EditableTextState editable = state<EditableTextState>(
find.descendant(
of: finder,
matching: find.byType(EditableText, skipOffstage: skipOffstage),
matchRoot: true,
),
);
// Setting focusedEditable causes the binding to call requestKeyboard()
// on the EditableTextState, which itself eventually calls TextInput.attach
// to establish the connection.
binding.focusedEditable = editable;
await pump();
});
}