查看原文
其他

Flutter 正式推出 Windows 平台支持

Flutter 谷歌开发者 2022-08-07

作者 / Tim Sneath, Product Manager for Flutter and Dart, Google


自 Flutter 推出以来,我们一直专注于为出色的、拥有定制体验的应用提供跨平台解决方案,而且这些应用会被编译为机器代码,以充分利用设备的底层图形硬件。现在,这一愿景取得了长足的进展,我们为大家带来了 Windows 平台支持的首个正式版本,从此 Windows 开发者可以尽享移动开发者一直以来享有的高效率和强大功能。

我们推出 Flutter 的目标是,为您提供所需的工具,让您可以营造出色的体验,无论您的目标操作系统如何。因此,我们希望您在任何需要进行像素绘制的地方都可以使用一套统一的核心框架和工具。Flutter 让您可以营造优美的体验,凸显您的品牌和设计。Flutter 运行起来非常快速,可以直接编译为机器代码,同时凭借有状态热重载的加持,为您提供高效的交互式开发环境,让您可以在应用运行时进行变更,并立即查看结果。同时,Flutter 是开放的,有成千上万的贡献者为核心框架添加内容,并通过 package 生态系统对其进行扩展。


近 50 万的应用在使用 Flutter…


到目前为止,我们所见的发展趋势已经超出我们的预期,使用 Flutter 且已经发布的应用数量已接近 50 万,其中包含来自 Betterment、BMW 和字节跳动等公司的大型应用,还包含来自 Google 30 个团队的应用。根据 StatistaSlashData 等分析机构的统计,Flutter 在 2021 年成为热门的跨平台界面工具包:


  • Betterment
    https://verygood.ventures/success-stories/betterment
  • Statista
    https://www.statista.com/
  • SlashData
    https://www.slashdata.co/


我们的数据也印证了这一点,我们的工具在 2021 年全部四个季度的问卷调查中,获得了 92% 的 Flutter 开发者的一致认可。对于其余 8% 的开发者,我们也希望让您满意,我们正在用心聆听您的声音!


  • Flutter 2021 年第三季度调研结果分享
    https://medium.com/flutter/about-web-community-and-code-samples-q3-2021-survey-results-b67f5b997dca


问卷中呼声较高的一项需求便是支持 Windows 平台。


如今,我们非常高兴地宣布,Flutter 稳定版本全面支持 Windows 应用。



Windows 与 Flutter


数年前,我们提出了一个雄心勃勃的愿景,要将 Flutter 从 iOS 和 Android 移动应用领域扩展到更多平台,包括 web 端和桌面端


Flutter 可以在平台间通用的内容很多: 从可移植、硬件加速的 Skia 图像处理引擎,到 Flutter 渲染系统,核心原语 (如动画、主题、文本输入和多语言任务),以及 Flutter 包含的数百个 widget。


然而,桌面应用并不只是运行在更大屏幕上的移动应用。它们是专门针对键盘和鼠标等输入设备进行设计的。它们的窗口大小可调,且通常在宽屏显示器上运行。辅助功能、输入法编辑器和视觉样式等关键领域的习惯也与移动应用有所不同。桌面应用还与底层操作系统中的各种 API 集成: 从文件系统选择器到设备硬件,再到数据存储 (如 Windows 注册表),等等不一而足。


因此,我们在将 Flutter 引入 Windows 的同时,也针对 Windows 进行了定制。


Flutter 的 Windows 实现结合了 Dart 框架和 C++ 引擎,与我们对 Android 和 iOS 提供的支持一致。Windows 和 Flutter 通过包含 Flutter 引擎的嵌入层进行通信,该嵌入层负责翻译和调度 Windows 消息。Flutter 与 Windows 相互协调,完成界面在屏幕上的绘制,处理窗口大小调整及 DPI 变更等事件,并使用 Windows 现有的方式处理多语言任务 (例如输入法编辑器)。

△ Flutter 在 Windows 上使用完全相同的 Dart 代码,但利用了原生 Windows API

您的应用可以使用 Flutter 框架的全部功能,还可以在 Windows 上直接通过 Dart 的 C 语言互操作层,或者使用以 C++ 编写的平台插件,与 Win32、COM 和 Windows Runtime API 进行通信。我们还调整了许多通用插件,用来提供对 Windows 的支持,包括 camerafile_pickershared_preferences。更重要的是,社区已为众多其他 package 加入了对 Windows 的支持,涵盖了从 Windows 任务栏集成到串行端口访问的所有内容。

△ 数百个 package 已完成适配,用以支持为 Windows 构建的 Flutter 应用

对于完全定制的 Windows 界面,您还可以使用例如 fluent_uiflutter_acrylic 等 package 来创建可以精美呈现 Microsoft Fluent 设计体系的应用。您也可以使用 msix 工具来封装您的应用,并上传至 Windows 的 Microsoft Store 中。


  • fluent_ui
    https://pub.flutter-io.cn/packages/fluent_ui
  • flutter_acrylic
    https://pub.flutter-io.cn/packages/flutter_acrylic
  • msix
    https://pub.flutter-io.cn/packages/msix


以上措施使得应用在 Windows 上得以拥有精美的外观,运行快速,并且仍然可以移植到其他桌面或移动设备以及 web 环境中。以下是我们迄今为止看到的一些早期示例:






△ 一些用 Flutter 构建的 Windows 应用的早期社区案例,包括 HarmonoidRows
  • Harmonoid
    https://github.com/harmonoid/harmonoid
  • Rows
    https://rows.com/



Microsoft 与 Flutter


我们询问过 Windows 团队,是否愿意就 Flutter 的支持分享一下他们的感想。以下是来自 Microsoft Windows 开发者平台联合副总裁 Kevin Gallo 的分享:


我们很高兴看到 Flutter 增加了对创建 Windows 应用的支持。Windows 是一个开放的平台,我们也热诚欢迎所有的开发者。我们期待看到 Flutter 的开发者将他们美妙的体验带到 Windows,并发布在 Microsoft Store 中。Flutter 对 Windows 的支持让社区向前迈出了一大步,我们非常期待你们未来给 Windows 带来的内容与体验!


来自 Microsoft 的数支团队都为这一发布做出了贡献。我们要特别感谢 Fluent 设计团队对 Windows 上的 Flutter 应用中的图标所做出的贡献。他们的 fluentui_system_icons package 因其卓越的品质获得 Flutter Favorite 认证:

https://pub.flutter-io.cn/packages/fluentui_system_icons


我们对 Microsoft 在 Windows 无障碍功能的投入印象尤为深刻,感谢团队提供的帮助,确保了 Flutter 从一开始就支持屏幕阅读器功能。将无障碍功能视为小众功能是一种错误的做法。正如 Microsoft 包容性设计工具包中的这张图所示,我们理应在设计体验时考虑适应各种永久性、暂时性或情境性的需求:
https://www.microsoft.com/design/inclusive/

下面的视频演示了 Flutter 如何与 Windows Narrator 进行集成。我们在本视频中特意对屏幕进行了模糊处理,目的是让您了解这项功能对需要它的用户有多重要。

Narrator 是内置于 Windows 的屏幕阅读器应用,与 Flutter 应用配合得很好
  • Narrator
    https://support.microsoft.com/en-us/windows/complete-guide-to-narrator-e4397a0d-ef4f-b386-d8ae-c172f109bdb1



Windows 开发工具的生态系统


我们的工具合作伙伴也在增加对 Windows 的支持。这里仅列举一二:
  • FlutterFlow,即低代码 Flutter 应用设计工具,宣布支持 Windows,并发布相关功能以帮助开发者的 Flutter 应用适应桌面设备。
  • Realm 是一款超快速本地数据库。发布了最新版本支持使用 Flutter 构建 Windows 应用,使用 Dart FFI 快速访问底层数据库,扩展了他们对 iOS 和 Android 等移动平台的现有支持。
  • Nevercode 更新了他们的 Codemagic CI/CD 工具,以支持 Windows,让您可以在云端测试和构建 Windows 应用,并自动部署至 Windows Store。
  • Syncfusion 更新了他们的 widget 套件,以充分利用 Windows。如果您订阅了他们的工具包,您可以获得树形图和图表、丰富的数据网格 widget 以及日历等可视化组件,甚至还支持创建 PDF 和处理 Excel 电子表格。
  • Rive 宣布,其热门图形工具套件即将推出 Windows 版本,支持设计师和开发者创建可以通过状态机实时响应代码的交互式矢量动画。他们即将推出的 Windows 版本应用拥有惊人的性能和更低的内存占用,即将在 Microsoft Store 提供下载。
△ Rive 即将在 Windows 的 Microsoft Store 中推出
  • FlutterFlow
    https://flutterflow.io/
  • FlutterFlow 支持桌面端应用
    https://www.youtube.com/watch?v=6jnXHgSQ-Q0
  • Realm
    https://docs.mongodb.com/realm/sdk/flutter/
  • Real Flutter SDK 发布
    https://www.mongodb.com/developer/article/introducing-realm-flutter-sdk/
  • Dart FFI
    https://dart.dev/guides/libraries/c-interop
  • Codemagic CI/CD 工具
    https://flutterci.com/
  • Syncfusion
    https://www.syncfusion.com/flutter-widgets
  • Rive
    https://rive.app/


我们非常高兴地看到一个成熟的生态系统已经围绕着 Flutter 构建起来。我们鼓励大家在开始使用 Flutter 构建 Windows 应用时积极了解上述合作伙伴并尝试它们提供的工具。



Flutter 2.10 正式提供 Windows 平台支持


Flutter 2.10 对构建 Windows 应用提供了稳定、生产级别的支持。Flutter 2.10 还包括许多其他功能、性能优化和问题修复,我们将在另一篇文章中为大家详细介绍这些内容。


  • 安装和环境配置
    https://flutter.cn/docs/get-started/install
  • Flutter 2.10 更新一览
    https://medium.com/flutter/whats-new-in-flutter-2-10-5aafb0314b12


在接下来的几个月里,我们还将发布对 macOS 和 Linux 平台支持的稳定版本,届时您的生产版 Flutter 应用将得到全套的平台支持,包括桌面端、web 以及移动平台。

与此同时,感谢您对 Flutter 的支持。我们期待看到您为 Windows 构建的内容!

非常欢迎您参加开发者说·DTalk 栏目,与我们分享您对 Flutter 的使用心得、实战经验或应用技巧、代码贡献等优质内容。入选的原创作者将获得我们的纪念礼品以及有机会被推荐参选 "谷歌开发技术专家"。即刻扫描下方二维码填写信息,报名参加吧!


△ 扫描二维码,即刻报名参与!






推荐阅读

如页面未加载,请刷新重试

 点击屏末 | 阅读原文 | 即刻访问 Flutter 开发者社区中文资源



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存