Flutter 2 正式发布!

3月4日凌晨,Flutter 2 正式发布: 开发者为任何平台建立美观、快速且可移植应用的能力得以更上一层楼。经过 Flutter 2,您可使用相同的代码库为五种操做系统构建原生应用: iOS、Android、Windows、macOS 和 Linux;以及为 Chrome、Firefox、Safari 和 Edge 等浏览器打造 web 体验。Flutter 甚至能够嵌入到汽车、电视和智能家电,为环境计算提供最普适、可移植的体验。html

咱们的目标是从根本上改变开发者的应用构建思路,让体验先于平台。Flutter 可让您尽情雕琢精美的应用体验,畅快表达本身的品牌和设计风格。Flutter 能够将您的源代码编译为机器码,并快速运行,同时借助有状态热重载功能为您带来了解释环境的高效生产力,让您能够在应用运行时作出更改并当即查看结果。并且 Flutter 是开源的,有成千上万的贡献者在为核心框架添砖加瓦,并围绕其打造了包含海量 package 的生态系统。git

发布 的 Flutter 2 中,咱们将 Flutter 从移动框架扩展为可移植框架,让您的应用基本能够不加变更地在多种平台上运行。仅 Google Play 商店就已有超过 15 万款 Flutter 应用,而如今应用能够在无需重写的状况下部署到桌面设备和 web 平台,能够说每款应用都经过 Flutter 2 获得 "免费升级"。github

世界各地的用户都在使用 Flutter,包括 WeChatGrabYandex GoNubankSonosFasticBettermentrealtor.com 等热门应用。Flutter 在 Google 也是备受依赖的重要工具,咱们有一千多名工程师正在使用 Dart 和 Flutter 构建应用。许多产品已经发布,包括 Stadia、Google One 和 Google Nest Hub。web

几个月前,Google Pay 改用 Flutter 打造其旗舰移动应用,在生产力和质量上取得重大进步。经过统一代码库,团队消除了平台之间的功能差别,精简了超过 50 万行代码。Google Pay 还表示,其工程师效率大幅提升,技术债务显著减小,并在 iOS 和 Android 系统上统一了安全审查和实验等发布流程。编程

Flutter web 支持

也许 Flutter 2 带来的最重大的进展是在 web 平台达到了稳定版canvas

Web 的 早期基础以文档为中心。但 web 平台通过发展,所包含的平台 API 也愈加丰富,已实现高度复杂的应用,支持硬件加速 2D 和 3D 图形以及灵活的布局和绘画 API。Flutter 的 web 支持创建在这些创新的基础上,提供了一个以应用为中心 的框架,能充分展示现代 web 的全部优点。设计模式

此次发布带来的初始版本特别关注三种应用场景:浏览器

  • 渐进式 web 应用 (Progressive web apps, PWA) ,兼具 web 的高覆盖面与桌面应用的强大功能。
  • 单页应用 (Single page apps, SPA) ,只需加载一次便可与互联网服务互传数据。
  • 将现有 Flutter 移动应用带到 web ,使两种体验共享代码。

在过去几个月准备发布稳定版 web 支持的过程当中,性能优化方面也取得了许多进展,增长了由 WebAssembly 构建的由 CanvasKit 驱动的新渲染引擎。Flutter Plasma 是由社区成员 Felix Blaschke 构建的演示,展现了使用 Dart 和 Flutter 构建复杂 web 图形体验的便利性,并且这些体验也能够在桌面或移动设备上原生运行。安全

咱们不断扩展 Flutter,力求为你们提供 web 平台最棒的功能。最近几个月,咱们增长了文本自动填充、地址栏 URL 和路由控制以及 PWA 清单。因为桌面浏览器与移动浏览器一样重要,咱们添加了交互式滚动条和键盘快捷键,提高了桌面模式下的默认内容密度,并为 Windows、macOS 和 Chrome OS 增长了屏幕阅读器无障碍功能支持。性能优化

目前已经出现了一批使用 Flutter 构建的 web 应用示例。在教育工做者中,iRobot 以其广受欢迎的 Root 教育机器人 而闻名。Flutter 在 web 平台对生产环境的支持,使 iRobot 可以将现有的 教育编程环境 搬到 web 上,从而覆盖到了 Chromebook 以及其余以浏览器为主要体验的设备。iRobot 的 博文 详尽阐述了选择 Flutter 的理由以及使用状况。

另外一个例子是 Rive,他们为设计师打造的强大工具能够将建立的自定义动画发布到任意平台。其 新版 web 应用 完 全由 Flutter 构建,现已进入 Beta 阶段,这也是 web 平台最能展示 Flutter 特点的体验之一。

您能够从 Flutter web 发布文章 中了解更多信息。

桌面、可折叠和嵌入式设备上的 Flutter 2

除了传统的移动设备和 web 以外,Flutter 正愈来愈多地覆盖到其余类型设备。Flutter Engage 主题演讲中重点介绍了三位合做伙伴,以展现 Flutter 的可移植性。

第一位合做伙伴,Canonical 与咱们联手将 Flutter 带到桌面,Canonical 工程师贡献的代码使得 Flutter 开发者能在 Linux 上进行开发和部署。在活动中,Ubuntu 团队展现了使用 Flutter 重写的新安装程序的早期演示版。对 Canonical 来讲,在多种硬件配置上提供稳如磐石且美妙的体验相当重要。将来,Flutter 将成为 Canonical 打造桌面和移动应用的首选

第二位合做伙伴 Microsoft 正在继续扩大对 Flutter 的支持。除了 持续与咱们合做 为 Flutter 提供高质量的 Windows 支持外,Microsoft 还发布了对 Flutter 引擎的贡献: 支持新兴的可折叠 Android 设备。这些设备带来了新的设计模式,应用能够扩展内容,或者利用双屏特性提供窗口并排体验。Surface 工程团队在一篇 博文 中展现了其工做成果,并邀请你们加入他们的行列,共同完成适用于 Surface Duo 和其余设备的高质量解决方案。

第三位合做伙伴,全球畅销汽车制造商之一 Toyota 宣布,计划构建由 Flutter 驱动的信息娱乐系统,打造最佳的汽车数字体验。使用 Flutter 标志着车载软件的开发方式向着将来迈进了一大步。Toyota 之因此选择 Flutter,是由于其高性能和体验的一致性,快速迭代的能力和极高的开发者工效,以及智能手机级别的触控体验机制。经过使用 Flutter 的嵌入器 API,Toyota 可以根据车载系统的独特需求对 Flutter 进行定制。

咱们很荣幸与 Toyota 等合做伙伴继续深刻协做,将 Flutter 带到汽车、电视和其余嵌入式设备中,在将来几个月咱们会为你们带来更多这方面的示例。

持续发展的 Flutter 生态系统

目前,Flutter 和 Dart 有超过 15,000 个 package: 包括 AmazonMicrosoftAdobeAlibabaeBaySquare 等企业 package,LottieSentrySVG 等关键 package,以及 sign_in_with_applegoogle_fontsgeolocatorsqfliteFlutter Favorite package。

咱们也为 Flutter 带来了 Google Mobile Ads Beta 版,这款全新 SDK 经过 AdMob 和 AdManager 提供多种广告格式,包括横幅式、插页式、原生和激励视频广告。咱们以前已经邀请了一些主要客户 (好比拉丁美洲最大的独立艺术家音乐平台 Sua Música) 先行体验此 SDK,如今计划开放 Google Mobile Ads 供更多的 Flutter 开发者采用。

图片

咱们还更新了 几项核心 Firebase 服务的 Flutter 插件: Authentication、Cloud Firestore、Cloud Functions、Cloud Messaging、Cloud Storage 和 Crashlytics,包括对健全空安全的支持以及对 Cloud Messaging package 的全面改版。

Dart: Flutter 背后的秘诀

如前所述,Flutter 2 能够移植到许多不一样的平台和设备上。之因此能轻松过渡到支持 web、桌面和嵌入式设备,这在很大程度上要归功于 Dart,它是 Google 为多平台开发优化的编程语言。

Dart 为构建应用提供了一套独特的功能:

  • 无心外的可移植性 ,编译器可为移动和桌面设备生成高性能的 Intel 和 ARM 机器代码,并为 web 输出严密优化过的 JavaScript。相同的 Flutter 框架源代码可编译到全部这些目标平台。
  • 在桌面和移动设备上进行有状态热重载的迭代开发,以及为现代界面编程的异步、并发模式设计的语言结构。
  • 全平台一致的 Google 级性能,健全空安全保证了运行时以及开发时的空约束。

没有其余语言能够同时提供这些功能,也许这就解释了为何 Dart 能成为 GitHub 上发展最快的语言 之一。

咱们同期发布的 Dart 2.12 是自 2.0 以来最重大的版本更新,支持健全的空安全。健全的空安全能扫除使人头疼的空引用异常,除非开发者明确容许,不然类型在开发时和运行时不可能包含空值。最重要的是,此功能并不是重要改动 (breaking change): 您能够按照本身的节奏将空安全逐步添加到代码中,咱们也准备好了迁移工具,您能够在准备好以后使用它完成迁移。

这一版本的更新还包括: FFI 的稳定版本,让您能够编写出高性能的代码与基于 C 语言的 API 进行互操做;使用 Flutter 编写的 新的集成开发者和性能剖析器工具;以及许多性能改进和尺寸优化,只需从新编译便可让代码获得长足的改进。如需了解详细信息,请查看 Dart 2.12 发布文章

即刻体验 Flutter 2

在介绍 Flutter 2 时,本文因为篇幅限制不免挂一漏万。事实上,被合并的 PR (pull request) 清单就有足足 200 页!请阅读 Flutter 2 技术博文,里面介绍了更多新功能和性能改进,咱们认为会让 Flutter 开发者感到满意,也请你们当即下载 Flutter 2 开始体验。

咱们还为你们准备了一款全新的示例应用,Flutter Folio,由咱们与加拿大埃德蒙顿的获奖设计团队 gskinner 合做完成,这个示例展现了咱们刚刚提到的一切内容。Flutter Folio 是一款能在您全部的设备上运行的剪贴簿应用。在小屏幕上体验时会强调展现内容;而在大屏幕上体验时则支持以桌面和平板电脑的习惯用法进行内容编辑;web 体验则着重强调分享。这些定制化的体验都共享相同的开源代码库,可供您自由浏览。

若是您还没有尝试过 Flutter,咱们相信它将为您的应用开发体验带来巨大的提高。Flutter,一个开源工具包,让您经过单一代码库为移动、桌面、web 和嵌入式设备打造美观、快速的应用,让您即使是在面对 Google 和广大用户的苛刻需求时也能游刃有余。

并且 Flutter 是免费和开源的。您会使用 Flutter 2 构建怎样精彩的应用呢?咱们拭目以待!

相关文章
相关标签/搜索