首页
学习
活动
专区
圈层
工具
发布

Flutter 小技巧之 MediaQuery 和 build 优化你不知道的秘密

上,如下图所示,在弹出键盘和未弹出键盘的情况下,可以看到 MediaQueryData 里一些参数的变化:viewInsets 在没有弹出键盘时是 0,弹出键盘之后 bottom 变成 336 padding...又和键盘状态有关系,所以:键盘的弹出可能会导致使用 MediaQuery.of(context) 的地方触发 rebuild,举个例子:如下代码所示,我们在 MyHomePage 里使用了 MediaQuery.of...(context).viewInsets.bottom ,模仿 Scaffold 里使用 MediaQuery在 MyHomePage 里使用 LikeScaffold ,并给 LikeScaffold...) {    print("####### LikeScaffold build ${MediaQuery.of(context).viewInsets.bottom}");    return Material...,也就是: LikeScaffold 虽然使用了 MediaQuery.of(context) ,但是它不再因为键盘的弹起而导致 rebuild 。

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何在flutter中构建响应式布局(第五节)

    当检测到某些环境变化(称为特征)时,自动布局会根据指定的约束自动重新调整布局。 2. 尺码等级 大小类是根据大小自动分配给内容区域的特征。iOS 根据内容区域的大小类别动态调整布局。...{ Size screenSize = MediaQuery.of(context).size; Orientation orientation = MediaQuery.of(context...) { Size screenSize = MediaQuery.of(context).size; return Scaffold( body: Row(...) { Orientation deviceOrientation = MediaQuery.of(context).orientation; return Scaffold(...但是现在,如果您移动到特定屏幕然后在视图之间切换,您将丢失页面的上下文;也就是说,您将始终返回第一页,即 Chats。为了解决这个问题,我使用了多个回调函数将所选页面返回到HomePage.

    4.1K10

    Flutter 入门指北之基础部件

    Flutter App 接着看下 MyApp 这个类,继承自 StatelessWidget 并在 build 方法返回一个 MaterialApp 实例,(偷偷讲下,其实这边还可以返回 CupertinoApp...this.backgroundColor, // 界面的背景色 this.resizeToAvoidBottomPadding = true, // 避免 body 被底部弹出部件填充,例如输入法键盘...我们从上到下,通过构造函数来了解下各个 Widget的使用方法 AppBar AppBar({ Key key, this.leading, // 用于设置 AppBar 前置的按钮,例如设置返回我们需要的返回按钮等...left) this.locale, this.softWrap, // 当文字一行显示不完是否换行 this.overflow, // 如果超出限制的行数,以哪种方式省略未展示的内容...(context).size 获取到的为上层容器的宽高 width: MediaQuery.of(context).size.width),

    1.7K30

    Python学习教程(二)

    print "新建一个文件" context = '''The best way to learn python contains two steps: 1....25.2 14.2 10.6 24.4 14.2 ENSG00000000938 0.0 0.0 0.0 0.0 0.0 ENSG00000001084...用到的知识点 11.写程序 collapsemiRNAreads.py转换smRNA-Seq的测序数据 输入文件格式(mir.collapse, tab-分割的两列文件,第一列为序列,第二列为序列被测到的次数...中的序列比对到ref.fa, 输出短序列匹配到ref.fa文件中哪些序列的哪些位置 find 用到的知识点 输出格式 (输出格式为bed格式,第一列为匹配到的染色体,第二列和第三列为匹配到染色体序列的起始终止位置...此外,对于不同的思路并不是所有提到的知识点都会用着,而且也可能会用到未提到的知识点。但是所有知识点都在前面的讲义部分有介绍。

    1.6K80

    Android适配全面总结(三)----ROM适配

    3、华为手机获取拍照权限后拍照,返回值为空 问题起源: 开发中遇到了需要拍照和从图库中选择图片展示并上传的功能,其他手机测试没问题,华为手机获取拍照权限后拍照,返回值为空。...问题分析: 原来是华为在7.0以后的系统中,对于拍照后返回的图片也做了权限处理。...◆ 方式2:拨号键盘 + 快捷键设置(这种方式不是所有log都能显示) 进入拨号界面输入:*#*#2846579#*#* 依次选择:后台设置 ---> LOG设置 ---> AP 日志,重新启动手机。..., 0.0f); path.lineTo(0.0f, (float) h); path.arcTo(new RectF(0.0f, 0.0f, ((float)...R.string.account_toast_not_open_camera, Toast.LENGTH_SHORT).show(); // showTip("您未允许

    2.7K10

    解决HBuilderX无法检测安卓手机的问题:从“未检测到手机”到成功运行

    问题背景在使用HBuilderX开发uni-app项目时,许多开发者都会遇到一个令人头疼的问题:点击"运行到手机或模拟器"时,控制台提示"未检测到手机或模拟器,请稍后重试"。...核心解决方案简易四步法开启开发者模式进入"设置 → 关于手机"连续点击"版本号"7次,直到出现"您已处于开发者模式"提示启用USB调试返回设置,进入"开发者选项"开启"USB调试"开关正确连接USB使用数据线连接手机和电脑关键步骤...:在USB连接选项中选择"文件传输"或"MTP模式"(切勿选择"仅充电")授权并运行首次连接时授权USB调试权限返回HBuilderX点击运行,等待设备识别详细故障排查指南硬件连接问题数据线质量检测问题现象...:手机充电正常但无法被识别解决方案:更换原装或高质量数据线,避免使用仅支持充电的劣质线缆(提示:很多手机线无法传输,因为没带原装线,我换了好几个才行,最后用的键盘的数据线。)...对话框点击"确定"并建议勾选"始终允许"如误操作拒绝,需重新插拔或重启电脑系统限制注意Android 5.0+系统避免使用访客模式部分厂商ROM有额外权限要求(如小米的USB安装应用权限)平台特定说明Android

    1.2K10

    Android 天气APP(二)获取定位信息

    ; /** * 消息提示工具类 */ public class ToastUtils { public static void showLongToast(Context context,...得到权限之后开始定位 } else {//申请失败 ToastUtils.showShortToast(this, "权限未开启...这个方法和onCreate是平级的,你只要是写在MainActivity的{}里面,想放那里就放那里 ⑤ 实现BDAbstractLocationListener接口 /** * 定位结果返回...location.getLongitude(); //获取经度信息 float radius = location.getRadius(); //获取定位精度,默认值为0.0f...运行一下,请运行在自己的手机上,别使用虚拟机和模拟器(PS: 如果你运行报错了,请把你的错误信息贴出来,我好判断是什么问题) 点击 仅使用期间允许或者始终允许 之后就可以得到定位地址了。

    2.2K30

    《Flutter》-- 6.高级组件

    semanticChildCount,//子项数量 DragStartBehavior dragStartBehavior = DragStartBehavior.down,//开始处理拖拽行为的方式,默认为检测到拖拽手势时开始处理...maxScrollExtent:最大可滚动长度; extentBefore:距离滚出视图窗口顶部的长度; extentInside:视图窗口内部长度,大小等于屏幕显示的列表长度; extentAfter:列表中未滑入视图窗口部分的长度...const [],//PageView的列表项 this.dragStartBehavior = DragStartBehavior.down,//处理拖拽开始行为的方式,默认为检测到拖拽手势时开始执行滚动拖拽行为...oldDelegate) { return true;//是否需要执行重绘 } } 示例效果: 创建Flutter自绘组件时,可以做以下两点性能优化: 1)尽可能利用好shouldRepaint()的返回值...如果绘制的内容不需要依赖外部状态,返回false即可;如果绘制过程需要依赖外部状态,可以在shouldRepaint()中判断依赖的状态是否改变,如果已改变,则返回true并执行重绘操作,反之则返回false

    12.6K20

    万字长文详解如何用Python玩转OpenGL | CSDN 博文精选

    世界坐标系(World Coordinates) 世界坐标系是右手坐标系,以屏幕中心为原点(0, 0, 0),且是始终不变的。 ?...GLUT 库提供了几个函数帮我们捕捉鼠标事件、键盘事件和窗口事件: glutMouseFunc() 该函数捕捉鼠标点击和滚轮操作,返回4个参数给被绑定的事件函数:键(左键/右键/中键/滚轮上/滚轮下)...glutKeyboardFunc(keydown) 该函数捕捉键盘按键被按下,返回3个参数给被绑定的事件函数:被按下的键,x坐标、y坐标 glutReshapeFunc() 该函数捕捉窗口被改变大小,...VBO 将顶点信息放到 GPU 中,GPU 在渲染时去缓存中取数据,二者中间的桥梁是 GL-Context。...GL-Context 整个程序一般只有一个,所以如果一个渲染流程里有两份不同的绘制代码,GL-context 就负责在他们之间进行切换。

    10.9K22
    领券