Flutter 新功能、Dart 开发工具 及CSS 代码(flutter dart教程)

2020 年 11 月 16 日,Google 开发者大会 (Google Developer Summit) 在线上举行。本次大会以“代码不止”为主题,全面介绍了产品更新以及一系列面向本地开发者的技术支持内容。11 月 18 日,进行了以 Flutter 为主题的演讲,本文重点关注了 Flutter 性能方面的进展以及一些新功能。

Flutter 性能进展

2019 下半年,共收到 23 个量化的性能提升;2020 上半年,共收到 27 个量化的性能提升。2020 上半年共收到来自 78 位开发者的 49 个性能改进。

工具的性能十分重要,性能测试也同样至关重要,拥有良好的性能测试可以:

  1. 快速重现问题;
  2. 迭代和验证解决方案;
  3. 提供数据,激励进一步的工作并防止倒退。

能耗与速度相关,每一帧渲染时间越长,能耗就越高,但能耗并不等于速度,因为在某些情况下,渲染速度快可能会导致能耗升高;渲染速度慢也可能不耗能。

  1. CPU 上运行时间虽然短,但由于新的算法利用了更多的 GPU 核心,所以 GPU 能耗反而增加;
  2. 有些 CPU 上的任务被别的 I/O 或 GPU 任务阻塞,进行了长时间的等待,而等待的时间内并无过多能耗。

因此,在速度之外增加的能耗测试是十分必要的。因为 Flutter 团队在 GitHub 上收到的大部分能耗问题都和 iOS 相关,所以,此次 Flutter 首先加入了 iOS 的能耗测试,Android 的能耗测试工具会于后续加入。

开发者可以使用 Flutter Gallery App 在 Timeline 中查看 CPU/GPU 的使用率,也可以用集成测试自动检测 CPU/GPU 的使用率。

Flutter 还新加入了 SkSL 着色器编译预热功能,来帮助开发者消除着色器编译卡顿。

如果一个 Flutter 程序第一次渲染某类动画时出现明显的卡顿,但是之后渲染这些动画时,卡顿完全消失,那么这就很可能是着色器编译卡顿。开发者可以使用 –trace-skia,然后检查 Timeline 来确认是否为着色器卡顿。

值得一提的是,SkSL 可以实现自动化生成与测试,这对于需要持续更新的 Flutter App 来说,可以节省很多的人力。

内存和包体积的测试工具

此次,Flutter 团队更新了 Dart 开发工具。Dart 开发工具是面向 Flutter 和 Dart 开发人员的工具套件,其中包括:

  1. 布局检查(Inspector)
  2. 性能调试(Performance)
  3. 内存调试(Memory)
  4. 网络调试(Network)
  5. 包体积调试(App Size)
  6. 调试器(Debugger)
  7. 日志(Logging)

内存调试器功能

  1. 事件窗格(Dart 和 Android 内存)
  2. 手动和自动快照(snapshot)和垃圾回收(GC)
  3. 内存分析
  4. 内存堆分配累加器(Heap Allocation Accumulators)
  5. 通过命令行界面将内存统计信息到处到 JSON 文件

内存测试

  1. 通过 ADB 交互直接进行内存测试
  2. Dart 开发工具内存测试
  3. iOS 内存测试

更多信息可以通过这篇由 Flutter 工程师撰写的文章进行了解。

包体积调试器功能

  1. 可视化了应用程序的总大小,包括功能级别的 Dart AOT 快照;
  2. 分析快照和应用包(APKIPA 等);
  3. 分析快照或应用程序包(APK,IPA 等)的差异;
  4. 查看软件包级别的应用大小归因数据。

CSS Grid

前端开发者往往会因为一些问题而感到困扰:设置布局以及让外观以你所希望的方式呈现。现在,前端开发者不再需要头痛这些问题了,也不需要 CSS 过滤器这种复杂的解决手段。CSS Grid 可以同时用于水平和垂直布局设置,这意味着开发者现在可以通过使用 CSS Grid 实现许多强大的功能,从元素居中到创建强大的全页面布局,都只需一行代码即可完成。

Super Centered

它可以解决 CSS 中最大的问题:元素居中对齐。只需要将“display”设置为“gird”,即可进入网格模式,然后通过一行代码:

place-items:center;

即可解决元素居中上遇到的问题。

Pancake Stack

可用于创建常用的页眉页脚和主体布局,同样地,先将“display”设置为“gird”,然后通过一行代码:

grid-template-rows: auto 1fr auto;

其中“grid-template-rows”用来设置父区域布局中行的大小,而后面的“auto”的含义是,对于自动放置的行,即自动调整大小的行,我们将使用最少内容的大小,在这种情况下就是内容的最小高度,这样可以使内容刚好放入该布局的空间内;“1fr”的含义是,我们希望用父区域剩余空间的一等份单位来容纳第二行。这样的做法会使界面变得十分整洁,开发者可以利用自动值和等份单位非常方便地设置页眉页脚和主体区域。

Flutter 新功能、Dart 开发工具 及CSS 代码(flutter dart教程)

Classic Holy Grail Layout

上面所提到的“auto 1fr auto”,既可用于行,也可以用于列。通过这一功能,我们可以将页面中除页眉和页脚的部分再分为三份,左右两边的区域依旧会根据内容自动分配空间大小。而在主体内容区添加内容时,空间大小保持不变。只需要一行代码即可创建全页面、自适应、可调整的流畅布局:

grid-template: auto 1fr auto / auto 1fr auto;

Flutter 新功能、Dart 开发工具 及CSS 代码(flutter dart教程)

12-Span Grid

设置布局的另一种方法是使用网格,12-Span 的布局一直很受欢迎。现在,只需要一行代码即可实现这一切:

grid-template-columns: repeat ( 12 , 1fr );

其中,我们使用了 repeat 函数,这样就不需要重复写 12 次 1fr,而是用“( 12 , 1fr )”来创建一个有 12 个 span 网格,每段网格具有相同单位值,均为空间的一等份单位。

Flutter 新功能、Dart 开发工具 及CSS 代码(flutter dart教程)

演讲者介绍

李宇骞,Google 软件工程师。

李宇骞是 Flutter 团队的一位软件工程师,主要专注于提升其性能。他毕业于清华大学计算机系本科,杜克大学计算机系博士。在加入 Flutter 前,他发明了一个新的矢量图形抗锯齿算法,显著提升了其速度和顺滑程度,并将其应用于 Flutter, Android, Chrome 等程序的2D 图像渲染引擎 Skia 中。

侯悠扬,Flutter 用户体验研究员。

侯悠扬于2017年加入 Google,并于2019年加入 Flutter 团队。她是 Flutter 团队一名用户体验研究员,关注提升 Flutter 产品和开发工具的程序员体验。加入 Flutter 团队之前她任职于 Google Cloud 团队,并在密歇根大学获得人机交互博士。

Una Kravets,Google 开发技术推广工程师。

延伸阅读:

2020年:前端开发的痛苦与快乐-InfoQ

关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书,点击文末「了解更多」,即可移步InfoQ官网,获取最新资讯~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年5月14日 上午9:28
下一篇 2023年5月14日 上午9:44

相关推荐

  • 石家庄市新华区:养老服务更加有质量(石家庄市新华区养老院)

    ↑志愿者为老人过生日。 近日,在石家庄市新华区赵佗路街道鑫城社区家外家养老院内,老人们相聚在一起,唱歌、走秀、跳舞……活动室内外洋溢着欢声笑语。 近年来,新华区大力推进“居家、社区…

    2022年7月1日
    117
  • 课题负责人职责

    课题负责人职责 在进行研究项目时,课题负责人是一个非常重要的角色。他或她的职责包括确定研究目标,组织和管理项目团队,确保研究计划得以顺利实施,以及最终完成研究项目。以下是一些课题负…

    科研百科 2024年10月22日
    0
  • 项目书技术指标

    项目书技术指标 随着现代工业的发展,项目书已经成为项目管理中不可或缺的一部分。项目书不仅记录了项目的目标和范围,还规定了项目的具体技术指标。这些指标是项目成功实施的重要保障,对于项…

    科研百科 2024年10月13日
    6
  • 投入325万!教育部将资助这65个研究选题(单位资助教育部规划课题)

    近日,教育部哲学社会科学研究专项(党的二十大精神研究)选题指南发布。本次共设立65个研究选题指南,一起来看详细内容。 具体申报事项和有关要求 一、申报事项 1.坚持正确政治方向、价…

    科研百科 2024年4月8日
    55
  • 技术项目管理办法

    技术项目管理办法 为了规范和技术项目的管理,确保项目的成功完成,我们制定了一系列技术项目管理办法。这些规定旨在确保项目团队的工作高效有序,项目进度和质量得到保证。 技术项目管理办法…

    科研百科 2024年9月24日
    21
  • 【党建之窗】城东区教育局:以党建为引领 打造东区教育“党建+”新模式

    近年来,城东区教育系统始终以办好人民满意的教育为初心使命,坚持以“党建 ”模式引领教育发展,将党建工作与教育教学各项工作紧密结合,充分发挥党员先锋模范作用,激发教育系统广大党员干部…

    科研百科 2023年7月15日
    94
  • 技术项目管理软件

    技术项目管理软件 随着信息技术的快速发展,技术项目管理软件已经成为了项目管理中不可或缺的一部分。本文将介绍几种常见的技术项目管理软件,并讨论它们的优点和适用场景。 一、敏捷开发 敏…

    科研百科 2024年7月28日
    47
  • 搞定项目管理,只需这11张图(搞定项目管理,只需这11张图纸)

    工作中有没有这种感觉,明明自己好不容易“熬”成了一个团队的管理者,但实际上自己却跟孙子一样,别人有啥事都找你,各种忙前忙后,然后项目出事了,责任还都是你的。 这就是典型的不会做项目…

    科研百科 2023年12月22日
    116
  • 什是项目管理

    什么是项目管理? 项目管理是指通过一系列的步骤和工具,确保项目能够在规定的时间、预算和范围内完成。项目管理的目标是确保项目成功交付,并实现项目目标。 项目管理包括许多不同的方面,例…

    科研百科 2024年5月23日
    55
  • 任务协作平台(任务协作管理软件)

    任务协作管理软件:让你的工作更高效 在现代工作环境中,任务协作管理软件已经成为了一种必备的工具。它们可以帮助团队成员更好地协作,提高工作效率,减少沟通障碍,并确保任务能够按时完成。…

    科研百科 2024年8月26日
    23