前言
学习 MDC Flutter 教程 的时候有一个登录页面,一时好奇在 Flutter 中键盘弹出事件怎么监听,经过半天折腾终于找到一个比较完善的解决方案.
解决方案分析
首先我找到了一个方法, WidgetsBindingObserver.didChangeMetrics
该方法能够获取到屏幕的改变(弹出键盘,旋转屏幕),在键盘弹出的一瞬间就会回调该方法,于是在输入框获得焦点的情况下我通过 ScrollController 将 ListView 滑动到最底部.
WidgetsBindingObserver
@override
void didChangeMetrics() {
super.didChangeMetrics();
if ((_usernameFocusNode.hasFocus || _passwordFocusNode.hasFocus) &&
MediaQuery
.of(context)
.viewInsets
.bottom > 50) {
setState(() {
_scrollController.animateTo(
context.size.