Flutter 点击输入框后 键盘闪出后立刻消失

这篇具有很好参考价值的文章主要介绍了Flutter 点击输入框后 键盘闪出后立刻消失。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

flutter 在布局最顶端使用的是Scaffold组件,在点击输入框键盘弹出后,布局的默认反应是改变屏幕大小重新布局。

这时通常会在Scaffold中添加选项:

resizeToAvoidBottomPadding:false

添加之后,应用整体布局不会随着键盘弹出而刷新改变。

但是键盘的弹出仍然会改变 MediaQuery.of(context).size获取到的数值,因此如果有输入框的父组件通过MediaQuery来决定自身大小的话,在键盘弹出的时候整个组件仍然会进行刷新导致键盘隐藏。

因为只考虑移动端,屏幕大小不会发生改变,所以考虑将屏幕大小提前保存成固定的数值。

import 'dart:ui';

//1.获取屏幕物理大小

double physicalWidth = window.physicalSize.width;

double physicalHeight = window.physicalSize.height;

// 2.获取dpr

double dpr = window.devicePixelRatio;

 // 3.宽度和高度

double screenWidth = physicalWidth / dpr;

double screenHeight = physicalHeight / dpr;

app启动之前提前获取好屏幕大小,在布局时直接引用,键盘弹出时就不会出现组件刷新导致键盘隐藏的问题。

-------------------------------------2022.5.27 更新----------------------------------------

额外补充一个奇怪的bug:

此bug只在IOS端出现,同样的代码在安卓端不存在。iphone测试机为IOS 15.4.1。

主要表现为window.physicalSize返回的大小有时正确有时为0

可能导致的原因猜测为window.physicalSize调用的过早,通过延迟调用后bug解决。

//延迟0.5秒加载屏幕大小

Timer.periodic(Duration(milliseconds: 500), (timer) async {

       //获取屏幕大小

        timer.cancel()

});

 此bug会导致某些依赖屏幕大小的Widget随机出现消失情况,bug非常隐蔽,帮大家避避坑。文章来源地址https://www.toymoban.com/news/detail-494354.html

到了这里,关于Flutter 点击输入框后 键盘闪出后立刻消失的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包