Skip to content

Content above keyboard jumps when keyboard is nearly opened (Only with edge-to-edge) #168768

Closed

Description

@javiermrz

Steps to reproduce

  1. Create a Flutter project with a newer version i.e. 3.29. ❗It should have edge-to-edge activated by default (the bug only happens with e2e)❗
  2. Add a TextFormField.
  3. Run in a newer device. I reproduced it both in my Pixel 9 Pro emulator and my physical device Pixel 8 Pro (the latter was a release build).

Animation jump triggered by any of 2 different actions

  • Open the TextFormField by pressing on it. The content above the keyboard will make a small jump when finishing the animation.
  • Once the keyboard is opened, slide from an edge so the 'back' bubble appears but don't release the finger from the screen (see example video). The keyboard will jump down. Cancel the 'back' action (swipe to the edge again). The keyboard will jump up.

❗❗ This does not happen when edge-to-edge is not active. It only happens with edge-to-edge.

Expected results

The animation of the content above the keyboard should be smooth while opening and not jump.

This bug was already created some years ago and supposedly fixed, but it's happening (again?).

Old issues:

The supposed fix, which by a comment in the 2nd issue it was supposed to be released after 3.11 but it's still hapenning):

❗❗👉👉 Guys, opening a keyboard is a pretty main action of an app. I'm really worried about the opened issue not having been attended for years, in a feature that is now activated by default in flutter (edge-to-edge). Not sure why this is not a main concern.

Actual results

The content above the keyboard jumps when it's nearly opened.

Code sample

Reproducible public repository: https://github.com/javiermrz/edge_to_edge_keyboard_bug_reproducible

Screenshots or Video

Video demonstration
Screen.Recording.2025-05-13.at.23.34.36.mov

Logs

Logs
Performing hot restart...
Syncing files to device sdk gphone64 arm64...
Restarted application in 781ms.
I/ug_reproducible( 5999): AssetManager2(0xb4000076cbd63598) locale list changing from [] to [en-US]
E/libEGL  ( 5999): called unimplemented OpenGL ES API
D/InsetsController( 5999): Setting requestedVisibleTypes to -9 (was -1)
E/libEGL  ( 5999): called unimplemented OpenGL ES API
I/ImeTracker( 5999): com.example.bottom_input_bug_reproducible:79af6f08: onRequestHide at ORIGIN_CLIENT reason HIDE_SOFT_INPUT_REQUEST_HIDE_WITH_CONTROL fromUser true
W/WindowOnBackDispatcher( 5999): sendCancelIfRunning: isInProgress=false callback=android.view.ImeBackAnimationController@9c68457
D/InsetsController( 5999): hide(ime(), fromIme=false)
I/ImeTracker( 5999): com.example.bottom_input_bug_reproducible:79af6f08: onCancelled at PHASE_CLIENT_ALREADY_HIDDEN
I/ImeTracker( 5999): system_server:fbe0c45a: onCancelled at PHASE_CLIENT_ON_CONTROLS_CHANGED
E/libEGL  ( 5999): called unimplemented OpenGL ES API
I/ImeTracker( 5999): com.example.bottom_input_bug_reproducible:ad84d20c: onRequestShow at ORIGIN_CLIENT reason SHOW_SOFT_INPUT fromUser false
D/InsetsController( 5999): show(ime(), fromIme=false)
D/InsetsController( 5999): Setting requestedVisibleTypes to -1 (was -9)
D/InputConnectionAdaptor( 5999): The input method toggled cursor monitoring on
I/ImeTracker( 5999): com.example.bottom_input_bug_reproducible:ad84d20c: onShown

The onShown message is the last one displayed after the keyboard finished opening.

Flutter Doctor output

Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.29.3, on macOS 15.4.1 24E263 darwin-arm64, locale en-ES)
[!] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/to/macos-android-setup for more details.
[✓] Xcode - develop for iOS and macOS (Xcode 16.3)
[✓] Android Studio (version 2023.3)
[✓] IntelliJ IDEA Community Edition (version 2025.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2025.1)
[✓] Connected device (5 available)
[✓] Network resources

Activity

  1. changed the title [-]SystemUiMode.edgeToEdge bottom viewInset jumps when keyboard is nearly opened[/-] [+]Content above keyboard jumps when keyboard is nearly opened (Only with edge-to-edge)[/+] on May 13, 2025
  2. darshankawar commented on May 14, 2025

    @darshankawar
    Member

    I was able to replicate the reported behavior on latest sdk versions. Note that, this was verified on Android 15 as Edge to Edge is default on this version and it may not replicate on lesser Android versions.

    stable : 3.29.3
    master : 3.32.0-1.0.pre.494
    
  3. added
    a: text inputEntering text in a text field or keyboard related problems
    platform-androidAndroid applications specifically
    e: OS-version specificAffects only some versions of the relevant operating system
    has reproducible stepsThe issue has been confirmed reproducible and is ready to work on
    team-androidOwned by Android platform team
    and removed
    in triagePresently being triaged by the triage team
    on May 14, 2025
  4. added
    P2Important issues not at the top of the work list
    on May 19, 2025
  5. reidbaker commented on May 19, 2025

    @reidbaker
    Member

    Theory: This might be because of safe area / media query insets being applied after the full animation is done.

  6. delfme commented on May 29, 2025

    @delfme

    @javiermrz this falls into a category of keyboard animation issues that seem difficult to fix.
    As I understand it, the root cause is a lack of synchronization between the system keyboard animation and the Flutter engine, which leads to stuttering during transitions.

    #120435
    #116836
    #139054

    If you dont mind wiriting ugly code and having the animation feel non-native, here's what you could do:

    • Disable resizeToAvoidBottomInset — this prevents Flutter’s built-in (and often buggy) keyboard handling from interfering.
    • Use a native plugin like keyboard_height (or an equivalent) to listen for keyboard show/hide events and animations.
    • Manually move UI elements upward when the keyboard appears. Carefully tune the animation duration - make it short enough to avoid stuttering, but not so fast that it causes abrupt jumps.
  7. 20 remaining items

  8. javiermrz commented on Aug 1, 2025

    @javiermrz
    Author
  9. ash2moon commented on Sep 23, 2025

    @ash2moon
    Contributor

    I haven't been able to replicate this on the latest version. There was some work recently done around checking the inset visibility during animations in the ImeSyncDeferringInsetsCallback.java on July. I wonder if that had fixed this issue. Could you please confirm? @javiermrz

  10. deminearchiver commented on Sep 23, 2025

    @deminearchiver

    If someone here still needs a workaround until this is implemented, I wanted to share an awesome package I found. The package is maintained by the Flutter Bounty Hunters and seems to follow most if not all good development practices. I am already using it in my own projects. I have though noticed a desync between the IME and Flutter, probably because communication with the platform is async, so please be aware of this issue.

    https://pub.dev/packages/super_keyboard

  11. tksoh commented on Sep 24, 2025

    @tksoh

    @ash2moon I still see the problem with Flutter 3.35.4. Are you talking about the same version?

  12. self-assigned this
    on Oct 1, 2025
  13. mboetger commented on Oct 1, 2025

    @mboetger
    Contributor

    Definitely able to repro. Digging into this now.

    Screen_recording_20251001_152525.mp4
  14. added
    P1High-priority issues at the top of the work list
    and removed
    P2Important issues not at the top of the work list
    on Oct 1, 2025
  15. added a commit that references this issue on Oct 8, 2025
    3379c7f
  16. added
    r: fixedIssue is closed as already fixed in a newer version
    on Oct 9, 2025
  17. github-actions commented on Oct 23, 2025

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  18. locked as resolved and limited conversation to collaborators on Oct 23, 2025
  19. added a commit that references this issue on Dec 10, 2025
    f11f8ea
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

P1High-priority issues at the top of the work lista: text inputEntering text in a text field or keyboard related problemse: OS-version specificAffects only some versions of the relevant operating systemfound in release: 3.29Found to occur in 3.29found in release: 3.32Found to occur in 3.32has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-androidAndroid applications specificallyr: fixedIssue is closed as already fixed in a newer versionteam-androidOwned by Android platform team

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions