失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > flutter 键盘挡住输入框问题

flutter 键盘挡住输入框问题

时间:2024-03-24 17:06:59

相关推荐

flutter 键盘挡住输入框问题

bool isShowKeyboard = false;double keyboardSize = 260; //软键盘高度//类添加with WidgetsBindingObserver,生命周期监听器class SendRedEveDialogState extends State<SendRedEveDialog> with WidgetsBindingObserver//首先给编辑框做一个焦点final FocusNode _sumFocusNode = FocusNode();//在init中作监听WidgetsBinding.instance!.addObserver(this);//输入框焦点监测_sumFocusNode.addListener(() {if (_sumFocusNode.hasFocus) {//如果输入框被点击if (MediaQuery.of(context).viewInsets.bottom > 0) {//如果键盘有弹起//键盘已弹起isShowKeyboard = true;}} else {//如果没有被点击,就是没弹起键盘isShowKeyboard = false;}mySetState(() {});});//didChangeMetrics可以监听界面高度的变化。其中键盘的弹出和收起这些其实都属于高度的变化自然也是可以监听到的@overridevoid didChangeMetrics() {super.didChangeMetrics();WidgetsBinding.instance!.addPostFrameCallback((_) {// 以后是安卓零碎并且在焦点聚焦的状况下if (Platform.isAndroid && _sumFocusNode.hasFocus) {if (MediaQuery.of(context).viewInsets.bottom > 0) {isShowKeyboard = true;} else {isShowKeyboard = false;}mySetState(() {});}});}TextField(//只允许输入小数inputFormatters: [FilteringTextInputFormatter.allow(RegExp("[0-9.]")),],focusNode: _sumFocusNode,//添加焦点controller: _sumController,keyboardType: TextInputType.number,maxLines: 1,textInputAction: TextInputAction.done,textAlign: TextAlign.right,decoration: InputDecoration(// contentPadding: EdgeInsets.only(//left: 5.0.r, right: 5.0.r),focusColor: Colors.white,border: InputBorder.none,hintText:S.current.lucky_bag_input_coin_tips,hintStyle: TextStyle(fontSize: 14.0.sp,color: const Color(0xFFBCBCBC))),style: TextStyle(color: Colors.black, fontSize: 14.0.sp),),//最后就设置高度了,Global.keyboardHeight==0,如果键盘弹起,就用260,否则就用30TopPadding(isShowKeyboard? (Global.keyboardHeight > keyboardSize.truncate()? Global.keyboardHeight: keyboardSize) +15: 30),@overridevoid dispose() {_sumController.dispose();_sumFocusNode.dispose();WidgetsBinding.instance!.removeObserver(this);super.dispose();}

如果觉得《flutter 键盘挡住输入框问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。