Flutter应用程序正式登陆Windows桌面

由Google所开发的跨平台应用程序开发组件Flutter,推出了最新版本2.10,这个版本有许多新功能,但最重要的是开始正式支持Windows桌面。Flutter从原本的iOS和Android移动设备出发,后来版图波及Linux和网页,现在Flutter应用程序还可以在Windows上执行。

前几年Flutter开发团队开始了这项野心勃勃的计划,要让Flutter不只可用于移动设备,还要跨到其他的平台上,目前已经有将近50万个应用程序使用Flutter开发。Flutter核心跨平台组件,包括了可移植且具有硬件加速功能的图形引擎Skia、Flutter渲染系统、动画、主题、文本输出和国际化等数百个小工具。

要将Flutter移植到桌面并非一件简单的工作,开发团队提到,桌面应用程序不只是更大屏幕的移动应用程序,需要能够接受键盘和鼠标等不同输入设备,还有可调整大小的窗口,以便于在宽屏幕上执行,而在无障碍功能、输入法编辑器和视觉样式等,都有不同的设计,桌面应用程序需要支持文件系统选择器、设备硬件,甚至是Windows注册表资料存储等各种内容。

因此要在Flutter支持Windows,需要特别针对Windows量身定做。而与Android和iOS支持相同的是,Flutter的Windows实例结合了Dart框架和C引擎,Windows和Flutter间使用嵌入层来进行通信,该嵌入层托管了Flutter引擎,并且负责翻译和回应Windows消息,Flutter会与Windows协调UI搭建,以及改变大小和DPI变更等事件处理,并且会和现有的Windows配合,来实现输入法编辑器等国际化设置。

以Flutter构建的音乐应用程序Harmonoid

开发者可以在Windows上,使用所有Flutter框架功能,并且通过Dart和C的互通层,与Win32、COM和Windows Runtime API通信。Flutter团队针对Windows特别设计了UI,开发者可以使用fluent_ui和flutter_acrylic等组件,以微软Fluent设计系统来构建应用程序,并且使用msix工具,将应用程序打包成安装应用程序,并且上传到Windows的微软商店。

除了正式支持Windows平台之外,Flutter 2.10也有不少性能改进,在iOS/Metal上对需要重新搭建的区域(Dirty Region)提供部分重绘功能,这个新功能在部分基准测试中,可将90百分位数和99百分位数光栅化(Rasterization)时间减少一个量级,并将这些基准测试中的GPU利用率,从90%降低到10%以下。之后重绘的功能,会波及到更多的平台上。

开发团队在Flutter 2.8时,开始采用自己内部的图片记录格式,而在Flutter 2.10中,开发团队进一步对该格式进行优化,成果包括能够有效率地处理不透明层,即便在最糟的情况,基准测试中的影格光栅化时间也下降到三分之一。

另外,在配置文件和发布模式下,Dart程序代码会预先编译成为原生机器码,官方提到,这段高性能和小巧的程序代码,是整个程序类型流(Type Flow)分析的关键,能够进行更多的编译器优化和树摇(Tree-Shaking)优化。但类型流分析必须涵盖整个应用程序,因此执行成本很高,而在最新的Flutter版本中,类型流分析速度更快,在基准测试中,Flutter应用程序整体构建时间下降约10%。

Flutter 2.10平均构建时间下降约10%

Flutter 2.10也对各平台特有功能进行微调,包括iOS、Android和网页,同时更新Material 3,支持更多的图标。VS Code Flutter扩展组件的更新,让开发者在挑选颜色的时候,在编辑器中预览颜色。官方也宣布移除Flutter开发者频道,简化开发者的选择,并且移除对iOS 9.3.6支持。