震惊!!Flutter 2 来了!

Souleigh ✨ 等级 610 1 0

震惊!!Flutter 2 来了!{{{width=300}}} 作者 | Flutter 官方博客

译者 | 核子可乐

策划 | 田晓旭

下一代 Flutter 专为 Web、移动与台式机环境构建而成。

今天,我们宣布 Flutter 2 正式亮相!作为 Flutter 的一次重大版本升级,Flutter 2 将帮助开发人员立足任意平台创建起美观、快速且能够轻松移植的应用程序。在 Flutter2 的支持下,您可以使用相同的代码库将原生应用程序发布至 iOS、Android、Windows、macOS 以及 Linux 五大系统阵营之上。此外,Flutter 2 还能够完美契合 Chrome、Firefox、Safari 以及 Edge 等网络浏览器,甚至可以被嵌入至汽车、电视与智能家居当中,借此带来最普遍、最具便携性的计算体验。

震惊!!Flutter 2 来了!

我们的目标,是从根本上改变开发人员的应用程序构建思路。不同于以往对于特定平台的依赖,如今开发人员们可以将希望创造的体验本身作为出发点。Flutter 帮助您将品牌与设计诉求充分纳入应用体验当中。Flutter 的运行速度极快,能够将源代码编译为机器码;我们还支持有状态热重载,确保您在解释环境中获得良好生产力,并在应用程序运行时做出变更并立即查看结果。Flutter 是一套开放式核心框架,而且已经有成千上万贡献者通过软件包生态系统做出扩展贡献。

震惊!!Flutter 2 来了!

在今天发布的 Flutter 2 当中,我们将 Flutter 由移动框架扩展为一套可移植框架,努力确保您的应用程序能够在几乎无需任何调整的前提下轻松运行在不同平台之上。目前,单在 Play Store 软件商店中就存在超过 15 万个 Flutter 应用,且每款应用都可以获得 Flutter 2 提供的免费升级,由此在无需重写的情况下直接运行在目标台式机及 Web 环境当中。

目前,世界各地的客户都在积极使用 Flutter,包括微信、Grab、Yandex Go、Nubank、Sonos、Fastic、Betterment 以及 realtor.com 等高人气应用。在谷歌,同样有 1000 多名工程师正在使用 Dart 与 Flutter 构建应用产品,其中的代表包括 Stadia、Google One 以及 Google Nest Hub。

震惊!!Flutter 2 来了!

就在几个月前,Google Pay 刚刚转投 Flutter 的怀抱,借此在生产力与质量方面取得了重大进步。通过统一代码库,项目团队消除了不同平台之间的功能差异,并削减了超过 100 万行代码。Google Pay 还报告称,如今团队工程师们的效率大为提升、技术债务显著减少,发布流程也变得更为统一(例如 iOS 与 Android 上的安全审查与试验)。

Flutter 为 Web 应用添助力

Flutter 2 当中最具份量的升级,当数对 Web 的生产质量支持能力。

Web 在早期发展阶段主要以文档为中心。时至今日,Web 平台已经相当丰富并提供大量平台 API,可提供硬件加速下的 2D 与 3D 图形处理能力、灵活的布局与绘图 API,共同构建起高度复杂的应用程序。Flutter 的 Web 支持充分吸纳了上述创新优势,提供一套以应用程序为中心的框架体系,能够发挥现代 Web 提供的一切功能。

新版本主要关注以下三大应用场景:

  • 渐进式 Web 应用(PWA),将 Web 的广泛覆盖范围与桌面应用程序的功能优势结合起来。

  • 单页应用程序(SPA),一次加载并与互联网服务之间持续传输数据。

  • 将现有 Flutter 移动应用引入 Web 环境,实现两种体验间的代码共享。

过去几个月以来,我们一直努力实现稳定的 Web 支持能力,并在性能优化方面取得了大量进展。除了添加一套由 WebAssembly 构建的全新 CanvasKit 驱动型渲染引擎之外,我们还公布了 Flutter Plasma——由社区成员 FelixBlaschke 构建的演示方案,用以展示如何通过 Dart 与 Flutter 困难构建起复杂的 Web 图形体验。现在,这些体验已经能够在台式机与移动设备上原生运行。

我们一直在扩展 Flutter 以构建起行业最佳的 Web 平台。最近几个月,我们引入了文本自动填充功能,对地址栏 URL 及路由的控制机制以及 PWA 清单功能。为了将台式机浏览器与手机浏览器统一起来,我们又添加了交互式滚动条与键盘快捷键、增加了台式机模式下的默认内容显示密度,同时增强了屏幕阅读器对于 Windows、MacOS 以及 Chrome OS 辅助功能的支持能力。

我们已经发布 Flutter 构建的部分 Web 应用程序示例。在教育类用户中,iRobot 公司以其高人气 Root 教育机器人而闻名。Flutter 对于 Web 的生产级支持帮助 iRobot 将现有教育编程环境轻松迁移至 Web,相关功能也借此顺利登陆 Chromebook 及其他网络浏览器。关于相关进展以及选择 Flutter 的原因,请参阅 iRobot 发布的 说明博文:

https://edu.irobot.com/the-latest/building-a-coding-experience-for-all

震惊!!Flutter 2 来了!

另以 Rive 为例,这是一款专门面向设计师群体的强大工具,能够在任意平台上创建出自定义动画。其更新 Web 应用程序现已提供 Beta 测试版,完全由 Flutter 构建而成,充分展示了 Flutter 新版本提供的全面服务。

震惊!!Flutter 2 来了!

Flutter 2 登陆台式机、折叠式设备与嵌入式设备

除了传统移动设备与 Web 平台之外,Flutter 也开始为其他设备类型提供支持。在本文中,我们将以三位合作伙伴为例,聊聊 Flutter 的强大可移植性表现。

首先是 Canonical,我们双方合作将 Flutter 引入桌面环境,借此 Canonical 工程师们贡献的代码支持 Flutter 在 Linux 上的开发与部署。Ubuntu 团队展示了由 Flutter 重写的全新安装程序的早期演示效果。对 Canonical 而言,最重要的就是如何在各类硬件配置之上提供稳定且令人愉悦的使用体验。展望未来,Flutter 将成为 Canonical 构建后续桌面与移动应用程序时的默认选项。

震惊!!Flutter 2 来了!

接下来是微软,软件巨头同样在不断扩大对 Flutter 的支持。除了在 Flutter 当中建立更完善的 Windows 支持能力之外,微软此次同样宣布将对 Flutter 引擎提供全面支持,借此支持更多新型折叠式 Android 设备。这类设备将引入新的设计模式,相关应用能够扩展显示内容或利用双屏特性提供并行体验。结合 Surface 工程团队的博文,他们展示了自己的工作成果并邀请更多参与成员,希望借 Flutter 之力提升 Surface Duo 及其他同类设备的体验质量。

震惊!!Flutter 2 来了!

最后,全球汽车巨头丰田公司也宣布了相关计划,着手构建由 Flutter 提供支持的车载信息娱乐系统,希望借此将最佳数字体验引入汽车产品。使用 Flutter 代表着车载软件的开发方式将出现重大变化。之所以选择 Flutter,是因为丰田看中了其出色的性能与一致性使用体验、快速迭代、易于掌握的人机工程学设计以及与智能手机相匹配的良好触控机制。通过使用 Flutter 的嵌入器 API,丰田得以针对车载系统的独特需求对 Flutter 做出量身定制。

震惊!!Flutter 2 来了!

我们很高兴能够与丰田及其他厂商积极合作,将 Flutter 应用于汽车、电视及其他嵌入式设备。未来几个月内,我们也将继续分享更多实际用例。

不断发展的 Flutter 生态系统

目前,Flutter 与 Dart 已经拥有超过 15000 种软件包,分别来自 Amazon、微软、Adobe、阿里巴巴、eBay 以及 Square 等。除 Lottie、Sentry 以及 SVG 等关键软件包之外,sign_in_with_apple、google_fonts、geolocator 以及 sqflite 等 Flutter Favorite 首选软件包同样值得关注。

现在,我们宣布正式推出 Google Mobile Ads for Flutter 的 Beta 版本。这是一种能够与 AdMob 与 AdManager 配合使用的全新 SDK,可提供包括横幅广告、插页广告、原生广告与奖励视频广告在内的多种广告格式。此前,我们一直在与多位主要客户共同试用此 SDK,例如南美洲最大的独立艺术家音乐平台 SuaMúsica 等。如今,我们决定开放 Google Mobile Ads for Flutter SDK 以供行业广泛使用。

震惊!!Flutter 2 来了!

我们还将对 Flutter 插件做出更新,包括多项核心 Firebase 服务:Authentication, CloudFirestore, Cloud Functions, Cloud Messaging, Cloud Storage 以及 Crashlytics,外加 sound null safety 支持以及对 Cloud Messaging 软件包的全面更新。

Dart: Flutter 背后的独门绝技

如前文所述,Flutter 2 拥有灵活的多平台与多设备可移植能力。而这种轻松过渡至 Web、桌面与嵌入式设备的优势,在很大程度上要归功于 Dart——针对多平台开发并进行优化的谷歌编程语言。

在构建应用方面,Dart 提供一套独特的功能组合:

  • 稳健的可移植表现,其编译器能够面向移动与台式机设备生成高性能的英特尔与 ARM 机器码,并为 Web 环境提供经过严格优化的 JavaScript 输出。所有目标皆可使用相同的 Flutter 框架源代码。

  • 支持有状态热重载的迭代开发,充分支持桌面与移动设备,同时提供现代 UI 编程中的异步、并发模式设计提供相应的语言构造。

  • 谷歌级性能水平,可跨越一切平台实现良好性能表现,提供 sound null safety 以保证运行时与开发过程中的 null 约束能力。

从目前来看,还没有哪种语言能够像 Dart 这样将所有功能优势融合起来。也正因为如此,Dart 成为 GitHub 上发展速度最快的语言之一。

Dart 2.12 现已正式发布,也是自 2.0 版本之后我们推出的最大规模发行版,可充分支持 sound null safety。Sound null safety 有望消除 null 引用引发的异常,为开发及运行时提供良好保障,允许开发人员明确指定哪些类型中可以包含 null 值。最重要的是,这项功能并非空降落地:您可以按自己熟悉的方式将其逐步添加至代码内,而后配合迁移工具实现 null 值保护。

此次更新还包含 FFI 稳定实现,允许您编写出能够与基于 C 语言的 API 进行互操作的高性能代码;由 Flutter 编写的全新集成化开发者与分析器工具;外加众多性能与体量方面的改进,能够在无需重新编译的前提下进一步实现代码升级。关于更多详细信息,请参阅 Dart 2.12发布的公告博文:

https://medium.com/dartlang/announcing-dart-2-12-499a6e689c87

Flutter 2:现已发布

关于 Flutter 2 还有很多新鲜内容可讲,但受到本文篇幅所限,我们无法一一尽述。实际上,全部 pull 请求记录与说明构成的文档长达 200 页!感兴趣的朋友请访问 Flutter 2独立技术博客,在这里了解关于新功能与性能改进的更多信息:

https://medium.com/flutter/whats-new-in-flutter-2-0-fe8e95ecc65

震惊!!Flutter 2 来了!

我们还与加拿大屡获殊荣的设计团队 gskinner 合作开发出新的展示成果——Flutter Folio。Folio 是一款剪贴板应用程序,适用于一切设备平台。其小屏幕体验专为内容捕捉所设计;大屏幕支持允许您立足台式机与平板电脑以大家熟悉的方式完成编辑操作;Web 体验则专门针对共享操作开发而成。这一切量身定制体验都将共享同一套开源代码库,您可以随时查看并参与贡献。

震惊!!Flutter 2 来了!

如果您还没有体验过 Flutter,请千万不要错过它将给您应用程序开发体验带来的重大提升。在 Flutter 中,我们还提供一套开源工具包,可通过单一代码库构建起面向移动、桌面、Web 以及嵌入式设备的出色应用程序,将谷歌级别的质量水准引入您的实际需求场景当中。

Flutter 为自由开源项目,我们期待有更多朋友使用 Flutter 2 构建起精美绝伦的开发成果!

收藏
评论区

相关推荐

flutter -- dart基础之dart简介和安装
Dart介绍: Dart是由谷歌开发的计算机编程语言,它可以被用于web、服务器、移动应用 和物联网等领域的开发。 Dart诞生于2011年,号称要取代JavaScript。但是过去的几年中一直不温不火。直到Flutter的出现现在被人们重新重视。 要学Flutter的话我们必须首先得会Dart。 da
震惊!!Flutter 2 来了!
{{{width300}}} 作者 | Flutter 官方博客 译者 | 核子可乐 策划
Flutter 2 正式发布!
昨天凌晨,Flutter 2 正式发布: 开发者为_任何_平台创建美观、快速且可移植应用的能力得以更上一层楼。通过 Flutter 2,您可以使用相同的代码库为五种操作系统构建原生应用: iOS、Android、Windows、macOS 和 Linux;以及为 Chrome、Firefox、Safari 和 Edge 等浏览器打造 web 体验。Flutt
flutter 第一步 安装环境
前言 如果想开发flutter 先购买好梯子,配置好代理还是会经常出各种问题! 安装环境 java 环境安装 下载地址(https://links.jianshu.com/go?tohttps%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk8down
Flutter如何引用第三方库并使用
Flutter官网点击访问(https://link.jianshu.com/?thttps%3A%2F%2Fflutter.io) 如何引用并安装第三方库 pubspec.yaml管理第三方库 在pubspec.yaml中添加第三方库名称及版本号。 例如添加第三方库english_words dependencies: flut
可以用Flutter愉快的开发web 了
简单的试了一下,完全用flutter现有的widget进行开发。github上面有说现在是preview版本,有些widget还不能用。但是最终是会支持整个的flutter现有的UI的。 跟用flutter开发原生app一样。flutter_web还有很长的一段路要走。希望年底能出个像样的版本。 不支持第三方库说明 目前pub.da
Flutter 移动应用开发指南
Flutter 移动应用开发指南 Flutter 作为新一代的跨平台 UI 框架,已经在 Android 和 iOS 移动平台被广泛使用,未来还会进一步扩展到 Web、桌面和嵌入式等平台。只要编写一次代码,就可处处运行,真正做到了全屏制霸。本文将通过从零开发一个类似抖音的短视频应用来展示 Flutter 应用的完整开发过程,以及它的强大性和易用性。
Flutter 2.0 下混合开发浅析
多余的前言 Flutter 2.0 发布时,其中最受大家关注之一的内容就是 AddtoApp 相关的更新,因为除了热更新之外,Flutter 最受大家诟病的就是混合开发体验不好。 为什么不好呢?因为 Flutter 的控件渲染直接脱离了原生平台,也就是无论页面堆栈和渲染树都独立于平台运行,这固然给 Flutter 带来了较好的跨平台体验
【Flutter实战】初识Flutter
1.2 初识Flutter 1.2.1 Flutter简介Flutter 是 Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS 和 Android平台。 Flutter提供了丰富的组件、接口,开发者可以很快地为 Flutter添加 native扩展。同时 Flu
【Flutter实战】调试Flutter应用
2.5 调试Flutter应用有各种各样的工具和功能来帮助调试Flutter应用程序。 Dart 分析器在运行应用程序前,请运行flutter analyze测试你的代码。这个工具是一个静态代码检查工具,它是dartanalyzer工具的一个包装,主要用于分析代码并帮助开发者发现可能的错误,比如,Dart分析器大量使用了代码中的类型注释来帮
【Flutter实战】调试Flutter应用
2.5 调试Flutter应用有各种各样的工具和功能来帮助调试Flutter应用程序。 Dart 分析器在运行应用程序前,请运行flutter analyze测试你的代码。这个工具是一个静态代码检查工具,它是dartanalyzer工具的一个包装,主要用于分析代码并帮助开发者发现可能的错误,比如,Dart分析器大量使用了代码中的类型注释来帮
【Flutter实战】Dart线程模型及异常捕获
2.6 Flutter异常捕获在介绍Flutter异常捕获之前必须先了解一下Dart单线程模型,只有了解了Dart的代码执行流程,我们才能知道该在什么地方去捕获异常。 2.6.1 Dart单线程模型在Java和ObjectiveC(以下简称“OC”)中,如果程序发生异常且没有被捕获,那么程序将会终止,但是这在Dart或JavaScript中则不会!
解读 Flutter 全平台开发的误解与偏见
Flutter 2.0 发布之后,Web 版本进入了 stable 分支,Desktop 版本也可以在 stable 分支通过 snapshot beta 镜像开始预览使用,导致最近关于 “Flutter 制霸全平台” 之类的话题又被炒作起来,所以本篇主要对这个话题做一次解答。1、Flutter 制霸全平台谷歌官方在 F
Flutter - 深入理解Flutter应用启动
基于Flutter 1.5,从源码视角来深入剖析flutter应用的启动流程,相关源码目录见文末附录一、概述上一篇文章 已经介绍了FlutterApplication和FlutterActivity的onCreate()方法执行过程, 并触发Flutter引擎的启动,并最终执行到runApp(Widget app)方法,这才刚刚开始执行dart的
Flutter - 深入理解Dart虚拟机启动
基于Flutter 1.5,从源码视角来深入剖析引擎启动中的Dart虚拟机启动流程,相关源码目录见文末附录一、概述 1.1 Dart虚拟机概述Dart虚拟机拥有自己的Isolate,完全由虚拟机自己管理的,Flutter引擎也无法直接访问。Dart的UI相关操作,是由Root Isolate通过Dart的C调用,或者是发送消息通知的方式