抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

通过WidgetsBindingObserver实现监听软键盘的弹出关闭

实现WidgetsBindingObserver

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class _State extends State<MyPage> with WidgetsBindingObserver {  
@override
void initState() {
super.initState();
// 初始化
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
// 销毁
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
// 监听
@override
void didChangeMetrics() {
super.didChangeMetrics();
WidgetsBinding.instance.addPostFrameCallback((_) {
if(mounted){
if(MediaQuery.of(context).viewInsets.bottom==0){
// 关闭键盘

}else{
// 显示键盘

}
}
});
}
}

注意

如果MediaQuery.of(context).viewInsets.bottom获取键盘高度如果无论如何都是0,需设置父级Scaffold的resizeToAvoidBottomInset为false

1
2
3
4
5
6
7
8
9
10
11
12

...
Scaffold(
// 子组件若需要监听键盘高度,需设置为false
resizeToAvoidBottomInset:false,
appBar: AppBar(
title: '页面title',
),
body: ContentPage(),
),
...

评论