Flutter: Detect keyboard open and close [duplicate]
I have a BottomNavigationBar
at the upper-most level of my application. I want to detect keyboard open and close basically anywhere in the app/subtree, so I can show and hide the BottomNavigationBar
whenever the keyboard is visible.
This is a general issue and may not be directly related to the BottomNavigationBar
. In other words, abstract from the BottomNavigationBar
:-)
Solution 1:
To check for keyboard visibility, just check for the viewInsets
property anywhere in the widget tree. The keyboard is hidden when viewInsets.bottom
is equal to zero.
You can check for the viewInsets
with MediaQuery
like:
MediaQuery.of(context).viewInsets.bottom
Solution 2:
I just created a Flutter plugin to notify about keyboard open and close events. It works both on Android and iOS.
keyboard_visibility
import 'package:keyboard_visibility/keyboard_visibility.dart';
@override
void initState() {
super.initState();
KeyboardVisibilityNotification().addNewListener(
onChange: (bool visible) {
print(visible);
},
);
}