一起看 I/O | Flutter 3 正式发布!

作者 / Tim Sneath, Google Flutter 和 Dart 产品组产品经理

Flutter 3 实现了 Flutter 以移动端为中心扩展到多平台的产品规划,并在今年 I/O 大会的主题演讲上正式发布,此次发布提供了对 macOS 和 Linux 桌面端的稳定版支持,同时包括 Firebase 集成的改进,增加了与生产力和性能相关的新特性,并对 Apple 芯片提供了支持。

Flutter 3 的演进

创建 Flutter 的初衷是为了彻底改变应用开发:将 “Web 应用的迭代开发模式”与“硬件加速的图形渲染”和“像素级的控制”三者结合——之前只有游戏才能这么做。自 Flutter 1.0 Beta 版发布以来的四年里,我们逐渐在这些基础上发展,增加了新的框架功能和新的 widget,与底层平台进行了更深入的整合,还加入了丰富的 package 库,此外还进行了许多性能和工具等方面的改进。

随着 Flutter 逐渐产品走向成熟,越来越多的人开始用它来构建应用。今天,有超过 50 万个应用使用 Flutter 发布。来自 data.ai 等研究公司的分析以及公众的评价都可以表明,Flutter 正被许多细分领域的客户所使用。其使用场景非常广泛,从微信 (WeChat) 等社交应用,到 Betterment 和 Nubank 等金融和银行类应用,再到 SHEIN 和 trip.com 等商旅应用以及 Fastic、Tabcorp 等生活方式类的应用,还有 My BMW 此类的硬件连接类应用,最后是巴西政府等公共机构的官方应用等等,都有 Flutter 在大放异彩。

现在已有超过 50 万个应用使用 Flutter 构建。

开发者告诉我们,Flutter 帮助他们在更多的平台上更快地构建出了精美的应用。我们最新的用户研究也表明:

  • 91% 的开发者认为 Flutter 缩短了构建和发布应用的时间。
  • 85% 的开发者认为 Flutter 使他们的应用比以前更加精美。
  • 85% 的开发者认为 Flutter 使他们的应用能在更多平台上发布。

Sonos 在 最近的一篇博客文章 中讨论了他们对设置体验的改版工作,其中着重强调了上述的第二点:

毫不夸张地说,Flutter 为我们带来了一种 “高级感”,这与我们团队之前提供的任何东西都不一样。对我们的设计师来说,最重要的是,他们可以轻松地构建新的用户界面,这意味着我们团队在面对各种设计规格时,会更少说 “做不到”,而更多地直接进行迭代。如果您觉得我们的说法有道理,我们推荐您试试 Flutter —— 至少我们非常庆幸当初选择了它。

欢迎来到 Flutter 3

Flutter 3 正式发布,至此,Flutter 的跨平台之旅迈入高潮。有了 Flutter 3,您就可以仅用一套代码库,为 6 个平台构建精美的体验。它为开发者提供了无与伦比的生产力,并使初创团队从第一天起就能将新的想法投放到完全可用的市场中。

在以前的版本中,我们已经在 iOS 和 Android 平台之外增加了 Web 端Windows 平台 的支持,现在,Flutter 3 增加了对 macOS 和 Linux 应用的稳定支持。增加平台支持需要的不仅仅是渲染像素这么简单: 还包括对新的输入和交互模型的支持、编译和构建的支持、无障碍和国际化支持,以及特定平台的整合。我们的目标是,让您能够灵活地充分利用底层操作系统,同时根据您的选择尽可能多地共享用户界面和逻辑。

在 macOS 上,我们已经投入资源支持 Intel 处理器和 Apple 芯片,并提供 通用二进制 (Universal Binary) 文件) 的支持,使应用能够打包成在两种架构上都能原生运行的可执行文件。在 Linux 上,Canonical 和 Google 已经合作为开发者们带来了高度集成的最佳开发工具。

Superlist 是一个很好的例子,告诉大家 Flutter 是如何帮助您实现精美桌面体验的,它今天推出了 Beta 版本供大家体验。Superlist 提供了超强的协作功能,通过一个崭新的应用将列表、任务和自由形式的内容结合在一起,将待办事项和个人计划等功能打磨得焕然一新。Superlist 团队选择 Flutter,是因为它能够提供快速且高度品牌化的桌面体验。我们认为,他们迄今为止的进展表明这是一个非常明智的选择。

Flutter 3 还对许多基本要素进行了改进,提高了性能,强化了对 Material You 的支持,并进一步提升了生产力。

除了上面提到的内容外,在这个版本中,Flutter 已经完全支持在 Apple 芯片 上进行原生开发。虽然自 M1 处理器诞生以来,Flutter 就一直与搭载 M1 的苹果设备兼容,但 Flutter 现在充分利用了 Dart 对 Apple Silicon 的支持,在搭载 M1 的设备上实现了更快的编译,并支持 macOS 应用的通用二进制文件。

在这个版本中,我们对 Material Design 3 所做的支持工作已基本完成。开发者们现在可以尽情使用这套自适应性强、跨平台的设计系统,包括其动态颜色方案和经过更新的视觉组件。

我们也将在近期发布更详细的技术文章,并在其中更多介绍这部分内容,以及 Flutter 3 的许多其他新功能。

Flutter 由 Dart 编程语言提供强有力的支持,这是一种用于多平台开发的高生产力、可移植的语言。我们在这个发布周期中对 Dart 的改进工作包括: 枚举支持成员变量、改进的超类参数继承,以及更为灵活的命名参数相关的新的语言特性;同时为 package:lints 开启了 2.x 版本,这是一套官方的 lint 规则,是根据我们总结的 Dart 最佳实践整合而成的一个 lint 规则集;与此同时,我们也更新了核心库的 API 文档,为其带来了丰富的示例代码。并且,为了改善平台集成特性,我们在 Flutter 插件中提供了一个新的模版,使用 dart:ffi 与原生平台进行 C 语言的互操作、对 RISC-V 指令集提供实验性支持,以及对 macOS 和 Windows 可执行文件的签名支持。如果想要了解 Dart 2.17 中所有新改进的细节情况,请关注将在近期发布的文章。

Firebase 和 Flutter

当然,构建应用不仅仅是构建用户界面框架。应用发布者需要一套全面的工具,来帮助他们构建、发布和运营自己的应用,包括认证、数据存储、云端功能和设备测试等服务。目前已有多种服务支持 Flutter,包括 SentryAppWriteAWS Amplify

Firebase 是由 Google 提供的应用服务平台。SlashData 的开发者基准研究 显示,62% 的 Flutter 开发者在其应用中使用 Firebase。因此,在过去的几个版本中,我们一直在与 Firebase 合作对两者的集成进行扩展和改良,并将其打造成 Flutter 的首选集成服务。这包括将 Flutter 的 Firebase 插件升级到 1.0,增加更好的文档和工具,以及提供像 FlutterFire UI 这样的新 widget,为开发者提供可重用的认证和用户资料界面。

今天,我们宣布 Flutter 和 Firebase 的整合已成为 Firebase 产品核心的一部分并得到完全的支持。我们已将源代码和文档转移到 Firebase 的主 repo 和网站中。Firebase 对 Flutter 的支持将和 Android 和 iOS 端的支持同步发展。

此外,我们还进行了重大改进,以支持 Flutter 应用使用 Crashlytics (这是 Firebase 中很受欢迎的实时崩溃报告服务)。随着 Flutter Crashlytics 插件的更新,您可以使用与 iOS 和 Android 开发者相同的功能集来实时跟踪致命错误。其中包括重要警报和指标,如 “无崩溃用户”,帮助您保持应用的稳定性。Crashlytics 的分析管线已经升级,以改善 Flutter 崩溃的聚合处理,使其能更快地分级、优先处理和修复问题。最后,我们简化了插件的设置过程,因此您只需要几个步骤就可以直接通过 Dart 代码设置并使用 Crashlytics。

Flutter 休闲游戏工具包

对于大多数开发者来说,Flutter 是一个应用框架。但是,利用 Flutter 提供的硬件图形加速支持和 Flame 等开源游戏引擎,围绕休闲游戏开发而建立的社区也在不断壮大。我们希望让休闲游戏开发者更容易上手,所以在今天的 I/O 大会上,我们发布了 Flutter 休闲游戏工具包 (Casual Game Toolkit),它提供了模板、最佳实践入门套件,还为您准备了可用于广告和云服务的赞助额度。

虽然 Flutter 并不是为高强度的 3D 动作游戏而设计的,但如今,一部分这类游戏在独立于游戏场景之外的用户界面部分也开始使用 Flutter 来实现,包括 PUBG Mobile 这样拥有数亿用户的流行游戏。在 I/O 大会上,我们想看看我们能把技术推进到什么程度,所以我们创建了一个有趣的弹球游戏,它使用到了 Firebase 和 Flutter 的 web 端支持。I/O Pinball 弹球游戏提供了一个定制桌面,围绕着 Google 最受欢迎的四个吉祥物进行设计,它们分别是: Flutter 的 Dash、Firebase 的 Sparky、Android 机器人和 Chrome 恐龙,您可以在这个游戏中与他人一较高下。我们希望通过这种有趣方式展示 Flutter 的多功能性。

Flutter: 由 Google 支持,由社区驱动

我们喜欢 Flutter 的一点是,它不仅仅是 Google 的产品——它是一个“属于所有人”的产品。开源意味着我们都可以参与其中,并与它的成功息息相关。您可以贡献新的代码或文档,创建 package 来为核心框架赋予新的超能力,编写教导他人的书籍和培训课程,还可以帮助组织活动和用户社群,等等。

为了展示社区的精彩,我们最近与 DevPost 合作,赞助了 Puzzle Hack 挑战,让开发者们通过 Flutter 来演绎经典的滑动拼图游戏,以展示他们的技能。这场活动呈现了 web、桌面和移动端完美结合的场景: 现在大家都可以通过浏览器或应用商店玩到这些游戏。

感谢您对 Flutter 的支持,欢迎来到 Flutter 3!