From 9b926535047d3e5592b7d89ee41e241fe43cedbd Mon Sep 17 00:00:00 2001 From: lKinder_Bueno Date: Sat, 10 Sep 2022 17:10:19 +0200 Subject: [PATCH] Android 11 API --- .../FlutterKeyboardVisibilityPlugin.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/flutter_keyboard_visibility/android/src/main/java/com/jrai/flutter_keyboard_visibility/FlutterKeyboardVisibilityPlugin.java b/flutter_keyboard_visibility/android/src/main/java/com/jrai/flutter_keyboard_visibility/FlutterKeyboardVisibilityPlugin.java index c7f2b96..e4d505e 100644 --- a/flutter_keyboard_visibility/android/src/main/java/com/jrai/flutter_keyboard_visibility/FlutterKeyboardVisibilityPlugin.java +++ b/flutter_keyboard_visibility/android/src/main/java/com/jrai/flutter_keyboard_visibility/FlutterKeyboardVisibilityPlugin.java @@ -5,6 +5,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; +import androidx.core.view.WindowInsetsCompat; import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.embedding.engine.plugins.activity.ActivityAware; @@ -70,9 +71,15 @@ public void onGlobalLayout() { Rect r = new Rect(); mainView.getWindowVisibleDisplayFrame(r); - // check if the visible part of the screen is less than 85% - // if it is then the keyboard is showing - boolean newState = ((double)r.height() / (double)mainView.getRootView().getHeight()) < 0.85; + boolean newState = false; + + if (android.os.Build.VERSION.SDK_INT >= 30){ + newState = mainView.getRootWindowInsets().isVisible(WindowInsetsCompat.Type.ime()); + } else{ + // check if the visible part of the screen is less than 85% + // if it is then the keyboard is showing + newState = ((double)r.height() / (double)mainView.getRootView().getHeight()) < 0.85; + } if (newState != isVisible) { isVisible = newState;