Flutter是 Google 用于为移动、Web 和桌面构建多平台应用程序的开源框架,今天将在肯尼亚内罗毕举办Flutter Forward活动。顾名思义,该团队正在利用此次活动展示该框架的新兴功能——其中大部分仍处于开发周期的早期阶段。此处的主要亮点是显着改进的图形性能、更轻松地将 Flutter 代码嵌入现有 Web 和移动应用程序的能力,以及对 Web Assembly 和 RISC-V 等新架构的支持。事实上,所有这些功能仍然位于金丝雀分支和实验标志后面,但它们确实显示了谷歌计划在未来几个月内将这个项目带到哪里——并帮助围绕它的整个开源生态系统了解一些免费工作在哪些地方可能有用(大约 40% 的 Flutter 贡献者不在谷歌)。
谷歌 Flutter 和 Dart 编程语言的产品和用户体验总监Tim Sneath告诉我,该团队决定完全重写 Flutter 的渲染运行时Impeller 。这个新版本旨在修复以前引擎的一些现有故障,同时也大大提高了性能——同时仍然提供对热重载和其他核心 Flutter 功能的支持。 “这是一种完全不同的体验。真是丝般柔滑,”他说。 “从本质上讲,我们能够构建一个为 Flutter 量身定制的图形渲染引擎,而不是利用通用渲染器。”
为了实现这种性能,该引擎现在具有预编译着色器,避免了以前引擎在着色器编译期间的帧丢失。现在还支持自定义着色器和像素着色器,这可以实现许多新效果——这反过来将使开发人员能够在 Flutter 之上构建大量新体验。在所有这些之下,是 Android 和 iOS 的低级 Vulkan 和 Metal 3D 图形 API。目前,该团队的工作重点是移动设备,尽管这些新图形功能中的许多也应该已经可以在 macOS 和 Windows 上运行。 “我们的 Flutter 通用模型是将它带到任何可以绘制像素的地方,”Sneath 说。
谈到让 Flutter 无处不在,团队正在预览的另一个新功能是元素嵌入。对于 Web 开发人员,这意味着他们可以使用它通过标准 <div> 元素轻松嵌入 Flutter 内容。虽然显然可以使用 Flutter 和 Dart 编写整个应用程序,但许多开发人员可能希望将这些新代码集成到可能用不同语言编写的现有应用程序中。
该团队还在开发一个新包,以实现更好的 JavaScript 和 Dart 互操作性,以及新工具,使 Flutter 能够更轻松地调用 Android 和 iOS 上的系统 API。它之前已经具备这种能力,但要让它发挥作用,需要为开发人员编写大量样板代码。
展望未来,该团队还将启动将 Flutter 编译为 WebAssembly 的初步工作。随着围绕这种二进制格式的炒作迅速增长——以及浏览器支持和服务器端工具的成熟——Flutter 团队也对这项技术感兴趣也就不足为奇了。 Sneath 解释说,在大多数情况下,这是为了从 Flutter 获得额外的性能。 “Dart 转换成非常紧密编译的 JavaScript 代码,但它仍然是 JavaScript 代码,所以它会被加载和解释——而且,对我们来说,WebAssembly 看起来会给我们一些改进的加载时间,减少大小和兆字节数通过电线传输。这看起来很有趣,”他说。 “WebAssembly 的潜力——无论是在网络上还是在网络之外——成为这种新型的便携式通用语言。我喜欢这样的想法,即我们也可以在 WebAssembly 中采用和使用其他语言的其他代码。”
至于 RISC-V,开放标准的免版税芯片架构也开始受到整个行业的关注,Sneath 指出,现在还处于早期阶段(尽管他说他真的很喜欢玩基于 RISC-V 的ClockworkPi DevTerm Kit ),但他认为支持这种架构可能会为 Flutter 开辟新的平台,尤其是在嵌入式领域。由于谷歌的 Android 团队也在对该架构进行投资,因此绝对值得关注谷歌在这方面所做的工作,尽管专门针对该架构的开发人员数量肯定仍然很少。
最后,Flutter 团队还为新闻发布者推出了一个有趣的新工具包,该工具包建立在该团队去年在谷歌 I/O 开发者大会上为游戏开发者推出的类似计划的成功基础上。该工具包应使新发行商能够快速构建以新为中心的移动应用程序,支持身份验证、广告集成、通知等——所有这些都无需从头开始设计这些元素。
谷歌的 Flutter 展示了新的图形功能、WebAssembly 和 RISC-V 支持,作者Frederic Lardinois最初发表于TechCrunch
