低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Flutter 2 来了:专为 Web、移动与台式机环境构建

2021 年 3 月 04 日

Flutter 2 来了:专为 Web、移动与台式机环境构建

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


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


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



在今天发布的 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。



就在几个月前,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 发布的 说明博文



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


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


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


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



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



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



我们很高兴能够与丰田及其他厂商积极合作,将 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 插件做出更新,包括多项核心 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 发布的公告博文

Flutter 2:现已发布


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



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



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


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


原文链接:


https://developers.googleblog.com/2021/03/announcing-flutter-2.html


2021 年 3 月 04 日 17:254269

评论

发布
暂无评论
发现更多内容

让Go“恐慌”的十种方法

博文视点Broadview

go

一口气说出 OAuth2.0 的四种授权方式

程序员内点事

Java oauth2.0

国内首本CTF赛事技术解析书籍,五年之约,兑现了!

华章IT

网络安全 Web CTF Reverse PWN

架构师训练营——第5周学习总结

jiangnanage

分布式缓存总结

罗亮

计算机操作系统基础(十四)---线程同步之条件变量

书旅

php laravel 操作系统 进程 线程’

话题讨论|作为一名程序员,你下班之后都会做些什么?

InfoQ写作平台官方

写作平台 话题讨论 话题

你可能还不知道自己无知

小天同学

读书 智能时代 信息噪声 高考

第五周作业

Linuxer

极客大学架构师训练营

一致性hash的理解与实现

dongge

SpringBoot 中使用 Filter 的正确姿势

Java课代表

架构师训练营第五周作业

一剑

Scrum Master与Project Manager的区别

Mew

Scrum

作业

chenzt

朱嘉明教授获2020杭州区块链国际周“特别致敬奖”

CECBC区块链专委会

CECBC 朱嘉明 区块链国际周 特别致敬

Ceph数据恢复初探

焱融科技

焱融科技 文件存储 分布式存储 数据恢复 Ceph

啃碎并发(三):Java线程上下文切换

猿灯塔

计算机中短期学习路线

zack

架构师训练营第五周作业

talen

很多人毕业多年以后,还是改不掉学生思维

小智

职场 思维方式 高考

这份高考卷,只有程序员能得满分...

程序员生活志

程序员 高考

干货 | 如何评估Kubernetes持久化存储方案

焱融科技

Kubernetes 容器 云原生 k8s 容器存储

第 5 周作业:一致性 Hash 算法

姜 某某

第5周结构师训练营——作业

jiangnanage

游戏夜读 | 关卡设计的难点

game1night

架构师训练营第5周

大丁💸💵💴💶🚀🐟

女同事问哪吒什么是 Spring 循环依赖?我...

通天哪吒

Spring核心原理解析

Chank

Java spring

Redis-进阶篇一

多选参数

数据库 redis redis高可用 redis6.0.0 Redis项目

架构师训练营 W5 作业

Kun

极客大学架构师训练营

kafka监听mysql实时数据变更

爱java爱自己

MySQL mysql事务

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Flutter 2 来了:专为 Web、移动与台式机环境构建-InfoQ