Flutter 创立伊始,咱们就致力于打造一个可能构建精美的、可高度定制的、并且能够编译为机器码的跨平台利用解决方案,以充分发挥设施底层硬件的全副图形渲染能力。明天,Flutter 对 Windows 生产版本的正式反对是对这一愿景实现的重要标记。它使 Windows 开发者也能享受到挪动开发的雷同生产力和性能。
Flutter 的指标是在任何平台上为你提供杰出的构建体验,并且咱们想要打造的是:只须要应用同一套外围框架和工具实现这个指标。通过 Flutter,你能够自在打造 柔美 的应用体验,使你的品牌和设计怀才不遇;它还领有 极高 的执行速度,因为它会被间接编译为机器码;而通过反对有状态的热重载性能以提供交互式的体验,让你能够在利用运行时间接看到代码更改后的后果,从而取得 生产力 晋升。Flutter 是凋谢的,成千上万的贡献者参加到外围框架的构建,或是通过 package 和插件生态系统对其进行扩大。
<highlight> 截止目前,曾经有近 50 万个应用程序应用 Flutter 进行构建 </highlight>
迄今为止,咱们看到这股趋势曾经超出了咱们的预期。包含一些大公司例如 Betterment、宝马以及字节跳动等,还有 Google 外部三十多个团队都应用了 Flutter。依据 Statista 以及 SlashData 的统计,Flutter 在 2021 年曾经成为了最风行的跨端 UI 工具包。
咱们本人的数据也能反对这一点,在 2021 年四个季度的开发者考察中,有 92% 的 Flutter 开发者对咱们提供的工具表示满意。(对于另外 8% 的人,咱们正在聆听你的反馈,心愿也能失去你的称心)。
这其中独特的需要之一就是对 Windows 的反对,
明天,咱们很快乐的发表,咱们此次公布的 Flutter 稳定版中,曾经全面反对构建 Windows 桌面端应用程序了!
Windows 与 Flutter
几年前,咱们为 Flutter 制订了一个巨大的愿景,即从 iOS 和 Android 的挪动端利用上扩大到其余平台,其中就包含 Web 端和 桌面端。
Flutter 的外围局部是跨平台的:从可移植的硬件加速的 Skia 图形渲染引擎,到 Flutter 的渲染零碎的外围单元,例如动画、主题、文本输出以及国际化,Flutter 提供了上百个 widgets。
然而桌面端并不只是挪动利用运行在一个更大的屏幕上这么简略,它们从设计上来说就很不一样。从输出设施角度来看,桌面端有键盘和鼠标,它们会在显示器上运行多个可变大小的窗口。而对于辅助性能 (Accessibility)、输入法、视觉款式等要害内容都有不同的规定束缚。并且它们还和底层操作系统中不同的 API 进行集成:桌面利用反对从零碎的文件选择器到设施硬件再到 Windows 注册表等数据存储的所有内容。
所以当咱们把 Flutter 带到 Windows 上时,咱们也须要为它进行定制。
正如咱们对 Android 和 iOS 的反对那样,对 Windows 的实现也包含了 Dart 框架以及 C++ 的引擎。Windows 与 Flutter 通过承载了 Flutter 引擎的 嵌入层 (Embedder) 进行通信,翻译以及发送 Windows 都是 嵌入层 的职责范畴。Flutter 与 Windows 独特将你的 UI 绘制到屏幕上,解决窗口大小调整和 DPI 更改等事件,并与已有的 Windows (如输入法编辑器) 配合应用。
在 Windows 上,Flutter 应用了一套完全相同的 Dart 代码,然而可能应用 Windows 的 API。
你的利用可能应用 Flutter 框架的全副性能,在 Windows 上,它还能够间接通过 Dart 的 C 互操作层或应用用 C++ 编写的平台插件与 Win32、COM 和 Windows 运行时 API 进行通信。咱们还适配了许多罕用插件以蕴含对 Windows 的反对,包含 camera
,file_picker
和shared_preferences
。更重要的是,社区曾经增加了各种其余 package 对 Windows 的反对,涵盖了从 Windows 任务栏集成到串行端口拜访的全部内容。
要齐全为 Windows 的 UI 进行定制,你也能够应用例如像是 fluent_ui 以及 flutter_acrylic 这样的 package 发明具备 Microsoft Fluent 设计美学的利用。而且应用 msix 工具能将你的利用包装进装置器,这样就能够上传到 Windows 上的 Microsoft Store。
总的来说,这促成了在 Window 平台上创立应用程序。以极快的速度在 Windows 上运行的同时还能转到其余桌面或者挪动利用以及 web 平台上运行。让咱们来看看到目前为止的一些晚期样例:
Microsoft 与 Flutter
咱们曾询问过 Windows 团队是否违心分享一些对 Flutter 反对的话。这是微软公司 Windows 开发者平台副总裁 Kevin Gallo 的评论:
“ 咱们很快乐看到 Flutter 减少了对创立 Windows 应用程序的反对。Windows 是一个凋谢的平台,咱们欢送所有开发人员。咱们很快乐看到 Flutter 开发人员将他们的体验带到 Windows 上,并公布到 Microsoft Store。对 Windows 的反对是 Flutter 社区的一大步,咱们急不可待地想看看你能为 Windows 带来哪些令人惊叹的利用!
事实上,许多 Microsoft 的团队也都为明天的公布做出了很大奉献。咱们特地想要感激 Fluent design 团队对于反对 Windows 上 Flutter 利用的图标做出的奉献。他们高质量的 fluentui_system_icons package 曾经退出到 Flutter Favorite 我的项目中了。
同时,Microsoft 围绕 Windows 可拜访性所做的投入也给咱们留下了粗浅的印象,非常感谢该团队的帮忙,以确保 Flutter 从第一天起就可能为屏幕阅读器提供反对。将无障碍性能视为额定的需要是谬误的。正如 Microsoft 包容性设计工具包 中的这张图片所示,咱们必须要关注提供永恒、长期或不同情境下需要的体验。
上面的视频演示了 Flutter 如何集成 Windows 讲述人 (Windows Narrator) 性能。出于本视频的目标,咱们特意含糊了屏幕,让你理解此性能对须要它的用户的价值。
Windows 讲述人是一个为 Windows 打造的屏幕阅读器,它同样可能在 Flutter 利用中良好的运行。
Windows 开发生态工具集
咱们的开发工具合作伙伴们也开始为 Windows 桌面端利用程序开发减少反对,比方:
- FlutterFlow 是低代码、拖拽式生成 Flutter 利用的工具,FlutterFlow 明天正式发表反对了 Windows 平台,同时还发表了一些帮忙 Flutter 开发者建设桌面利用的很多性能。
- Realm 是一个疾速的本地数据存储服务。明天公布的最新版本反对应用 Flutter 构建 Windows 桌面端应用程序,他们应用 Dart FFI 快速访问底层数据库,并减少了他们对 iOS 和 Android 等挪动平台的现有反对。
- Nevercode 团队更新了他们的 Codemagic CI/CD tool 工具并开始反对 Windows 桌面端,你能够在云端测试和构建 Windows 利用,并将其公布到 Microsoft Store。
- Syncfusion 更新了工具套件以充分发挥在 Windows 平台的劣势。如果你在应用他们提供的服务,你会发现他们的数据可视化组件,比方树状图、线性规、火花图表,日历组件甚至是 PDF 和 Excel 生成组件都曾经反对了 Flutter,Syncfusion Flutter widget 是用 Dart 原生构建的。
- 近期,Rive 发表推出其风行的图形工具套件的 Windows 版本,它可能让设计人员和开发人员创立交互式矢量动画,这些动画能够应用状态机实时响应代码。行将推出的 Windows 版本的应用程序提供了惊人的性能和更低的内存占用,并将很快将在 Microsoft Store 中提供下载。
看到围绕着 Flutter 的建设的成熟生态,咱们十分冲动,在你开始应用 Flutter 构建 Windows 利用的时候,咱们激励你多尝试一下生态里的这些合作伙伴的服务和工具。
Flutter 2.10 中的 Windows 平台反对
作为 Flutter 2.10 正式版的一部分,Flutter 曾经能够为 Windows 平台构建应用程序提供稳固的、具备生产品质的反对,Flutter 2.10 还蕴含诸多其余新个性和性能改良以及谬误修复,在明天的另一篇推文中曾经具体介绍。
在将来几个月里,咱们会公布更多为 macOS 和 Linux 平台提供稳定版反对的音讯,让你能够通过 Flutter 为更全的桌面平台、Web 平台和挪动端平台构建精美利用!
再次感激大家对 Flutter 的反对,期待看到你为 Windows 平台构建的精彩应用程序!
- 如果你想将下面这个图片当作桌面背景,请点击点击这个链接下载原图: https://files.flutter-io.cn/i…
致谢
- 原文: Announcing Flutter for Windows
- 链接: https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed
- 翻译: Vadaski
- 审校: Luke
- 制图: Lynn