监听软键盘的弹出和回收:
//继承 WidgetsBindingObserver 类
class BottomKeyboardInputState extends State<BottomKeyboardInput> with WidgetsBindingObserver {
@override
void initState() {
// TODO: implement initState
super.initState();
//初始化
WidgetsBinding.instance.addObserver(this);
}
@override
void didChangeMetrics() {
super.didChangeMetrics();
WidgetsBinding.instance.addPostFrameCallback((_) {
setState(() {
if(MediaQuery.of(context).viewInsets.bottom==0){
//关闭键盘
}else{
//显示键盘
}
});
});
}
@override
void dispose() {
// TODO: implement dispose
//销毁
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
}
注意:
当MediaQuery.of(context).viewInsets.bottom获取键盘高度是0, 就查看父级组件的高度
child: Scaffold(
resizeToAvoidBottomInset:false,//只要子组件需要监听键盘高度 ,父组件的所有该属性都应该设置false
appBar: CenterTitleAppBar(
title: '页面title',
),
body: ContentPage(),
),
参考:
https://blog.csdn.net/weixin_34082177/article/details/91370675
网友评论