本文解决了在颤振中使用TextField遇到的各种疑难杂症
这里您还需要知道脚手架中的一个属性。
官方文件给出的解释是处理键盘遮挡问题。默认值为true,如果不想顶一下就需要设置为false。
sdk的低版本中使用了ResizeToAvoidBottomPadding,需要设置为false,现在已经废弃了。但是网上很多文章都没有改正,仍然使用resizeToAvoidBottomPadding。
有两种情况。
一种是使用系统的回车键,比如安卓底部导航自带的回车键。
另一种是使用导航栏自定义回车键。
在第一种情况下,您需要在页面根布局中使用WillPopScope来拦截onWillPop中的返回处理。
原理是判断输入框是否有焦点。
当底部有固定组件时,比如提交按钮,我们希望在键盘弹出时按钮固定在键盘顶部,但中间的滚动视图可以自由滚动。
堆栈包可以在SingleChildScrollView之外重用,定位浮动按钮。
更多?注意在滚动组件底部留一段距离防止遮挡,同时动态添加bottomBar的高度,因为iphoneX上方的手机上会有一个虚拟按键,如果不添加按键高度也会被遮挡。
高度获取方法:mediaquery.of (context)。填充底部。
在showDialog布局中使用Scaffold包,不要忘记将backgroundColor设置为透明。
如果弹出窗口太高,还是需要固定高度,然后使用SingleChildScrollView。在弹出窗口中,也可以在关闭时截取,判断键盘是否弹出。如果它弹出来,你必须先关闭键盘。
将FoucusNode绑定到所有输入框。
在maxLines=1的情况下,输入框不支持换行,换行按钮会变成done。
侦听onEditingComplete方法
根布局用GestureDetector或InkWell包装,点击时键盘收起。
最后,记得销毁它