最近遇到一个需求,当表单填写完整时对用户进行弹窗提醒,本来以为是个很简单的需求,实际解决过程中反而花费了大量时间。
主要的问题在于android第三方输入法的键盘存在这么一个按键
这个按键事件是无法进行监听的,花费了大量事件寻找方法来解决,最后参考Flutter键盘弹出事件最终解决了这个问题,
我的解决办法是使用WidgetsBindingObserver的didChangeMetrics方法,该方法可以监听屏幕大小的改变,对用户的输入法的关闭进行监听。
首先在initState()中对WidgetsBinding进行初始化
//定义键盘的状态
bool isKeyboardActived = false;
@override
void initState() {
super.initState();
//初始化
WidgetsBinding.instance.addObserver(this);
}
然后重写didChangeMetrics,对其进行劫持,加入对onFocus回调事件
@override
void didChangeMetrics() {
super.didChangeMetrics();
WidgetsBinding.instance.addPostFrameCallback((_) {
// 当前是安卓系统