文 / Tim Sneath, Google Flutter & Dart 产品经理

Flutter 创建伊始,我们就致力于打造一个能够构建精美的、可高度定制的、并且可以编译为机器码的跨平台应用解决方案,以充分发挥设备底层硬件的全部图形渲染能力。今天,Flutter 对 Windows 生产版本的正式支持是对这一愿景实现的重要标志。它使 Windows 开发者也能享受到移动开发的相同生产力和功能。

用 Flutter 构建 Windows 桌面应用程序

Flutter 的目标是在任何平台上为你提供出色的构建体验,并且我们想要打造的是:只需要使用同一套核心框架和工具完成这个目标。通过 Flutter,你可以自由打造 优美 的使用体验,使你的品牌和设计脱颖而出;它还拥有 极高 的执行速度,因为它会被直接编译为机器码;而通过支持有状态的热重载功能以提供交互式的体验,让你可以在应用运行时直接看到代码更改后的结果,从而获得 生产力 提升。Flutter 是开放的,成千上万的贡献者参与到核心框架的构建,或是通过 package 和插件生态系统对其进行扩展。

截至目前,已经有近 50 万个应用程序使用 Flutter 进行构建

迄今为止,我们看到这股趋势已经超出了我们的预期。包括一些大公司例如 Betterment[1]、宝马以及字节跳动等,还有 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 (如输入法编辑器) 配合使用。

Flutter 在 Windows 平台的架构

在 Windows 上,Flutter 使用了一套完全相同的 Dart 代码,但是能够使用 Windows 的 API。

你的应用能够使用 Flutter 框架的全部功能,在 Windows 上,它还可以直接通过 Dart 的 C 互操作层或使用用 C++ 编写的平台插件与 Win32、COM 和 Windows 运行时 API 进行通信。我们还适配了许多常用插件以包含对 Windows 的支持,包括camerafile_pickershared_preferences。更重要的是,社区已经添加了各种其他 package 对 Windows 的支持,涵盖了从 Windows 任务栏集成到串行端口访问的全部内容。

目前已经有上百个 package 为通过 Flutter 构建 Windows 应用程序提供了适配。

要完全为 Windows 的 UI 进行定制,你也可以使用例如像是 fluent_ui[2] 以及 flutter_acrylic[3] 这样的 package 创造具有 Microsoft Fluent 设计美学的应用。而且使用 msix[4] 工具能将你的应用包装进安装器,这样就可以上传到 Windows 上的 Microsoft Store。

总的来说,这促进了在 Window 平台上创建应用程序。以极快的速度在 Windows 上运行的同时还能转到其他桌面或者移动应用以及 web 平台上运行。让我们来看看到目前为止的一些早期样例:

一些使用 Flutter 构建的 Windows 应用程序的早期社区示例,特别展示来自深圳团队的一款应用。

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[5] package 已经加入到 Flutter Favorite 项目中了。

同时,Microsoft 围绕 Windows 可访问性所做的投入也给我们留下了深刻的印象,非常感谢该团队的帮助,以确保 Flutter 从第一天起就能够为屏幕阅读器提供支持。将无障碍功能视为额外的需求是错误的。正如 Microsoft 包容性设计工具包[6] 中的这张图片所示,我们必须要关注提供永久、临时或不同情境下需求的体验。

下面的视频演示了 Flutter 如何集成 Windows 讲述人 (Windows Narrator) 功能。出于本视频的目的,我们特意模糊了屏幕,让你了解此功能对需要它的用户的价值。

Windows 讲述人是一个为 Windows 打造的屏幕阅读器,它同样能够在 Flutter 应用中良好的运行。

Windows 开发生态工具集

我们的开发工具合作伙伴们也开始为 Windows 桌面端应用程序开发增加支持,比如:

  • FlutterFlow[7] 是低代码、拖拽式生成 Flutter 应用的工具,FlutterFlow 今天正式宣布支持了 Windows 平台,同时还宣布了一些帮助 Flutter 开发者建立桌面应用的很多功能。

  • Realm 是一个快速的本地数据存储服务。今天发布的最新版本支持使用 Flutter 构建Windows 桌面端应用程序[8],他们使用 Dart FFI 快速访问底层数据库,并增加了他们对 iOS 和Android 等移动平台的现有支持。

  • Nevercode 团队更新了他们的 Codemagic CI/CD tool[9] 工具并开始支持 Windows 桌面端,你可以在云端测试和构建 Windows 应用,并将其发布到 Microsoft Store。

  • Syncfusion[10] 更新了工具套件以充分发挥在 Windows 平台的优势。如果你在使用他们提供的服务,你会发现他们的数据可视化组件,比如树状图、线性规、火花图表,日历组件甚至是 PDF 和 Excel 生成组件都已经支持了 Flutter,Syncfusion Flutter widget 是用 Dart 原生构建的。

  • 近期,Rive[11] 宣布推出其流行的图形工具套件的 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/images/branding/desktop/dash2022_4k.png

致谢

  • 原文: Announcing Flutter for Windows

  • 链接: https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed

  • 翻译: Vadaski

  • 审校: Luke

  • 制图: Lynn

文内链接

[1]

Betterment 使用 Flutter 的案例: https://verygood.ventures/success-stories/betterment

[2]

使用 fluent_ui package 实现具有 Microsoft Fluent 设计美学的设计: https://pub.flutter-io.cn/packages/fluent_ui

[3]

使用 flutter_acrylic package 实现具有 Microsoft Fluent 设计美学的设计: https://pub.flutter-io.cn/packages/flutter_acrylic

[4]

使用 msix 工具打包发布 Windows 桌面应用程序: https://pub.dev/packages/msix

[5]

Fluent design 团队开发的 fluentui_system_icons package: https://pub.dev/packages/fluentui_system_icons

[6]

Microsoft 包容性设计工具包: https://www.microsoft.com/design/inclusive

[7]

低代码、拖拽式生成 Flutter 应用的工具 FlutterFlow 官网: https://flutterflow.io/

[8]

Realm 今天宣布支持使用 Flutter 构建Windows 桌面端应用程序: https://www.mongodb.com/developer/article/introducing-realm-flutter-sdk

[9]

Nevercode 开发的 Codemagic CI/CD 工具: https://flutterci.com/

[10]

Syncfusion 官网的 Flutter widget 介绍界面: https://www.syncfusion.com/flutter-widgets

[11]

创建交互式矢量动画的工具 Rive 官网: https://rive.app/

稳定版正式发布 | 用 Flutter 构建 Windows 桌面应用程序相关推荐

  1. 开始使用 Flutter 构建 Windows 桌面应用吧!

    作者 / Chris Sells, Product Manager, Flutter developer experience 我们的使命是为开发者提供一个开源的高效框架,帮助他们在任何平台上构建美观 ...

  2. flutter 打包 windows桌面端程序步骤

    Flutter多平台打包请点击这里查看哦! 1.FLutter 开启windows支持 cmd运行下面命令,开启windows支持 flutter config --enable-windows-de ...

  3. 一文掌握Flutter for Windows桌面端稳定版新特性

    自从Flutter 创建以来,Flutter就致力于打造一个能够构建精美的.可高度定制的.并且可以编译为机器码的跨平台应用解决方案,以充分发挥设备底层硬件的全部图形渲染能力.今天,Flutter 对 ...

  4. Python 3.8 稳定版正式发布,新特性全面解读

    早在之前关于 Python 新版本的文档在官方一就直处于更新模式中,就在昨日 Python 3.8 稳定版正式发布了,让我们来看看新版本有哪些新特性呢? Python 3.8.0 稳定版的新特性 1P ...

  5. Flutter教程之Windows桌面应用程序开发

    Flutter教程之Windows桌面应用程序开发 一.前言 二.环境安装 三.创建项目 四.已有项目添加其他平台支持 一.前言 Flutter 是 Google 开源的 UI 工具包,帮助开发者通过 ...

  6. pytorch支持python哪个版本_PyTorch 1.0 稳定版正式发布!

    原标题:PyTorch 1.0 稳定版正式发布!

  7. 如何在 Python 中构建跨平台桌面应用程序

    如何在 Python 中构建跨平台桌面应用程序 开发桌面 GUI 应用程序曾经是一个乏味.容易出错且缓慢的过程. 当然,Python 在整体上极大地简化了应用程序开发,但在 GUI 领域,仍然没有真正 ...

  8. 用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld

    场景 Electron介绍 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js ...

  9. 对Windows桌面应用程序进行UI自动化测试

    所谓UI自动化测试,就是模拟一个用户,对应用程序的UI进行操作,以完成特定场景的功能性集成测试. 要对Windows桌面应用程序进行UI自动化测试,目前可选的技术主要是两种:VS自带的CodedUI ...

  10. python 桌面程序自动化测试_对Windows桌面应用程序进行UI自动化测试

    题记:本文简述如何利用appium对Windows桌面应用程序进行UI自动化测试. 所谓UI自动化测试,就是模拟一个用户,对应用程序的UI进行操作,以完成特定场景的功能性集成测试. 要对Windows ...

最新文章

  1. mybatis与php,浅谈mybatis中的#和$的区别
  2. 香港大学赵恒爽助理教授招收CV/ML等方向全奖博士生、博士后
  3. 神马搜索上线奥运会人气榜单 中国女排包揽前三
  4. linux内核经典书籍--Linux内核设计与实现
  5. 再谈Erlang代码热替换
  6. Linux程序开机启动
  7. Felgo之初体验--安装与运行
  8. Web服务器面临的五种应用层DOS威胁
  9. 动态执行shell脚本
  10. 腾讯视频如何设置画面对比度方面的内容
  11. 感知机:Perceptron Learning Algorithm
  12. CSS:transform
  13. C#中使用ribbon界面
  14. Electron 屏幕锁定 快捷键锁定 屏蔽快捷键
  15. 2238. Number of Times a Driver Was a Passenger
  16. java中英文排序_Java 中英文数字排序
  17. 【转载】UEBA架构设计之路
  18. uvm event 事件机制
  19. 卢卡斯定理 Lucas
  20. ABI and ISA

热门文章

  1. outlook邮箱显示一直启动中_outlook邮箱打不开一直在加载
  2. python中next是什么意思_Python代码中next()函数具有哪些功能呢?
  3. Premiere Pro CS6自学所需的视频编辑基础(二)
  4. 28. 移动端touch触摸事件
  5. 机器人系统仿真(七)——xacro语法详解
  6. html中sub标签作用,html中sub标签是什么?关于html sub标签的定义和使
  7. uniapp上传(拍照、本地),预览,删除图片
  8. android开发 高德地图自定义地图应用【最新】
  9. python累乘怎么写_python实现累乘multi函数(函数参数不限)
  10. 严格的概念认识——关系、关系模型