概要
- 监听应用软键盘收齐弹出
一、WidgetsBindingObserver
WidgetsBindingObserver类可以使用于监听页面的生命周期,根据用户时间需求响应响应时间。
didChangeMetrics在页面高度发生变化的时候会触发该回调。
class Chat extends StatefulWidget {
const Chat({ Key? key }) : super(key: key);
static const routeName = '/chat';
@override
State<Chat> createState() => _ChatState();
}
class _ChatState extends State<Chat> with WidgetsBindingObserver{
@override
void 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() {
scrollController.dispose();
WidgetsBinding.instance?.removeObserver(this);
super.dispose();
}
Widget build(BuildContext context) {
return Containe();
}
}