- Notifications
You must be signed in to change notification settings - Fork30k
[ios] Fix keyboard flicker when switching text fieldsq#182661
Draft
koji-1009 wants to merge 1 commit intoflutter:masterfrom
Draft
[ios] Fix keyboard flicker when switching text fieldsq#182661koji-1009 wants to merge 1 commit intoflutter:masterfrom
koji-1009 wants to merge 1 commit intoflutter:masterfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Labels
engineflutter/engine related. See also e: labels. platform-iosiOS applications specifically team-iosOwned by iOS platform team
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fix#180842
The issue was caused by#173598.
When there is a single TextField, the MethodChannel calls are as follows:
However, when there are two TextFields, the calls become:
In the multi-field case,
clearTextInputClientis called beforesetTextInputClientfor the next field. CallingremoveFromSuperviewduringclearTextInputClientcauses the keyboard to briefly dismiss and reappear (flicker).This PR defers the
removeFromSuperviewcall fromclearTextInputClienttohideTextInput, using a pending flag (_pendingInputViewRemoval). The input view is removed only afterresignFirstResponderdismisses the keyboard.showTextInputresets the flag to prevent stale flags from causing unintended removal when switching fields.For autofill contexts, a separate flag (
_pendingAutofillRemoval) defers removal totriggerAutofillSave, preserving the existing autofill save behavior.Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel onDiscord.
Note: The Flutter team is currently trialing the use ofGemini Code Assist for GitHub. Comments from the
gemini-code-assistbot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.