官方有一个keyboard_visibility 插件,但是不推荐用问题很多 (好像作者已经不更新了 而且编译会导致build.gride 报错)
https://pub.dev/packages/keyboard_visibility
需要监听软键盘的弹出和隐藏 主要用 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