passsy / dismiss-keyboard-on-background-tapr4
Dismiss the Keyboard by Tapping the Background
PublicIn Flutter mobile apps, tapping the background outside a text field must dismiss the keyboard by removing focus; check this for every field you add.
tests, run by the registry17 passed · slowest 3.4 ms
- The advice links to api.flutter.dev
✓fires3.4 ms
fires on a newly written TextField()
write lib/input.dartfired: line 1
final field = TextField();
✓fires2.9 ms
fires on a newly written TextFormField()
write lib/input.dartfired: line 1
final field = TextFormField();
✓fires3.0 ms
fires on a newly written CupertinoTextField()
write lib/input.dartfired: line 1
final field = CupertinoTextField();
✓fires2.5 ms
fires on a newly written ReactiveTextField<String>()
write lib/input.dartfired: line 1
final field = ReactiveTextField<String>();
✓fires2.6 ms
fires on a newly written CustomTextFormField<String>()
write lib/input.dartfired: line 1
final field = CustomTextFormField<String>();
✓fires2.6 ms
fires on a newly written _PrivateTextField()
write lib/input.dartfired: line 1
final field = _PrivateTextField();
✓fires2.4 ms
fires on a newly written fields.SearchTextField.named()
write lib/input.dartfired: line 1
final field = fields.SearchTextField.named();
✓fires2.6 ms
fires on a newly written TextField(onTapOutside: (event) { dismissKeyboard(); })
write lib/input.dartfired: line 1
final field = TextField(onTapOutside: (event) { dismissKeyboard(); });
✓fires2.5 ms
fires on the field name when the arguments start on another line
write lib/input.dartfired: line 1
final field = CustomTextField
<String>(
);
✓quiet2.5 ms
stays quiet on code that is not a field: // TextField()
write lib/input.dartstayed quiet
// TextField()✓quiet2.4 ms
stays quiet on code that is not a field: final controller = TextFieldController();
write lib/input.dartstayed quiet
final controller = TextFieldController();✓quiet3.0 ms
stays quiet on code that is not a field: final state = CustomTextFormFieldState();
write lib/input.dartstayed quiet
final state = CustomTextFormFieldState();✓quiet2.8 ms
stays quiet on code that is not a field: final field = TextFields();
write lib/input.dartstayed quiet
final field = TextFields();✓skips0.0 ms
stays quiet in test/input_test.dart
write test/input_test.dartno handler of the detector wants this event
final field = TextField();✓skips0.0 ms
stays quiet in lib/input.g.dart
write lib/input.g.dartno handler of the detector wants this event
final field = TextField();✓quiet2.5 ms
stays quiet on an untouched field when the agent edits elsewhere
write lib/input.dart · wrote line 2stayed quiet
final field = TextField();
final count = 2;✓skips0.0 ms
stays quiet when the agent only reads a field
read lib/input.dartno handler of the detector wants this event
final field = TextField();detector.test.tseach detect() call runs the real detectorEdit
import { expect, test } from "vitest";
import { detect, edit, read, write } from "@wellactually/sdk/v3/test";
test.each([
"TextField()",
"TextFormField()",
"CupertinoTextField()",
"ReactiveTextField<String>()",
"CustomTextFormField<String>()",
"_PrivateTextField()",
"fields.SearchTextField.named()",
"TextField(onTapOutside: (event) { dismissKeyboard(); })",
])("fires on a newly written %s", (field) => {
expect(detect(write("lib/input.dart", `final field = ${field};\n`))).toEqual([{ line: 1 }]);
});
test("fires on the field name when the arguments start on another line", () => {
expect(detect(write("lib/input.dart", "final field = CustomTextField\n<String>(\n);\n"))).toEqual([{ line: 1 }]);
});
test.each([
"// TextField()",
"final controller = TextFieldController();",
"final state = CustomTextFormFieldState();",
"final field = TextFields();",
])("stays quiet on code that is not a field: %s", (code) => {
expect(detect(write("lib/input.dart", code))).toEqual([]);
});
test.each(["test/input_test.dart", "lib/input.g.dart"])("stays quiet in %s", (path) => {
expect(detect(write(path, "final field = TextField();"))).toEqual([]);
});
test("stays quiet on an untouched field when the agent edits elsewhere", () => {
expect(detect(edit("lib/input.dart", "final field = TextField();\nfinal count = 2;", { written: "final count = 2;" }))).toEqual([]);
});
test("stays quiet when the agent only reads a field", () => {
expect(detect(read("lib/input.dart", "final field = TextField();"))).toEqual([]);
});