共计 4401 个字符,预计需要花费 12 分钟才能阅读完成。
3 月 4 日凌晨,Flutter 2 正式公布: 开发者为 任何 平台创立好看、疾速且可移植利用的能力得以更上一层楼。通过 Flutter 2,您能够应用雷同的代码库为五种操作系统构建原生利用: iOS、Android、Windows、macOS 和 Linux;以及为 Chrome、Firefox、Safari 和 Edge 等浏览器打造 web 体验。Flutter 甚至能够嵌入到汽车、电视和智能家电,为环境计算提供最普适、可移植的体验。
咱们的指标是 从根本上扭转 开发者的利用构建思路,让体验先于平台。Flutter 能够让您纵情雕刻 精美 的利用体验,畅快表白本人的品牌和设计格调。Flutter 能够将您的源代码编译为机器码,并 疾速 运行,同时借助有状态热重载性能为您带来了解释环境的 高效 生产力,让您能够在利用运行时做出更改并立刻查看后果。而且 Flutter 是 开源 的,有成千上万的贡献者在为外围框架添砖加瓦,并围绕其打造了蕴含海量 package 的生态系统。
在 公布 的 Flutter 2 中,咱们将 Flutter 从挪动框架扩大为 可移植 框架,让您的利用根本能够不加变动地在多种平台上运行。仅 Google Play 商店就已有 超过 15 万款 Flutter 利用,而当初利用能够在无需重写的状况下部署到桌面设施和 web 平台,能够说每款利用都通过 Flutter 2 失去 “ 收费降级 ”。
世界各地的用户都在应用 Flutter,包含 WeChat、Grab、Yandex Go、Nubank、Sonos、Fastic、Betterment 和 realtor.com 等热门利用。Flutter 在 Google 也是备受依赖的重要工具,咱们有一千多名工程师正在应用 Dart 和 Flutter 构建利用。许多产品曾经公布,包含 Stadia、Google One 和 Google Nest Hub。
几个月前,Google Pay 改用 Flutter 打造其旗舰挪动利用,在生产力和品质上获得重大提高。通过对立代码库,团队打消了平台之间的性能差别,精简了超过 50 万行代码。Google Pay 还示意,其工程师效率大幅提高,技术债权显著缩小,并在 iOS 和 Android 零碎上对立了平安审查和试验等公布流程。
Flutter web 反对
兴许 Flutter 2 带来的最重大的停顿是 在 web 平台达到了稳定版。
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: 包含 Amazon、Microsoft、Adobe、Alibaba、eBay 和 Square 等企业 package,Lottie、Sentry 和 SVG 等要害 package,以及 sign_in_with_apple、google_fonts、geolocator 和 sqflite 等 Flutter 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 构建怎么精彩的利用呢?咱们刮目相待!