-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Description
Steps to reproduce
- 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)❗
- Add a TextFormField.
- 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:
- SystemUiMode.edgeToEdge bottom viewInset jumps when keyboard is opening #89914
- Android keyboard animations isn't smooth and snaps to the position when It's in an Edge to Edge SystemUI mode #131152
- [android] Animation when opening keyboard is unsynchronized #116836 (this one is even opened for years but has 0 activity by the dev team? I hope that I track some attention by posting a complete Issue with more data and a more detailed video demo).
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
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: onShownThe 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