Flutter 2 来了!

下一代 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 发布的 说明博文:

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

另以 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发布的公告博文:

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

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

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

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


https://mp.weixin.qq.com/s/fnUK9PVz00OwP5ApK3WqTQ

如何快速提升 Flutter App 中的动画性能

发布于:3天以前  |  25次阅读  |  详细内容 »

Flutter 使用 Riverpod+Retrofit 构建 MVVM 开发模式

发布于:3天以前  |  35次阅读  |  详细内容 »

使用 Flutter 加速应用开发

发布于:14天以前  |  88次阅读  |  详细内容 »

深入分析 Flutter 渲染性能

发布于:16天以前  |  68次阅读  |  详细内容 »

深入分析 Flutter 渲染性能

发布于:21天以前  |  83次阅读  |  详细内容 »

Flutter 不是真正的跨平台框架

发布于:1月以前  |  201次阅读  |  详细内容 »

Flutter 2 来了!

发布于:1月以前  |  196次阅读  |  详细内容 »

Flutter Worker —— 闲鱼这样实现“逻辑跨平台”

发布于:1月以前  |  169次阅读  |  详细内容 »

针对 Web,移动端和桌面端构建的下一代 Flutter

发布于:1月以前  |  150次阅读  |  详细内容 »

使用 flutter_driver 进行集成测试

单元测试可以确保应用的各个部分正常工作,但如何确保整个应用正常工作呢?这就需要用到集成测试了。

发布于:6月以前  |  628次阅读  |  详细内容 »

详解:Flutter内存泄漏解决方案

众所周知,内存的高低是评判一款app的性能优劣的重要的指标之一。如何更简单的帮助开发者分析、暴露且解决内存泄漏问题,几乎是每一个平台或框架、开发者亟需的一个的"标配"的feature。但是对于flutter社区,缺少一款用得顺手的内存泄漏工具。 对于使用flutter而言,因使用dart语言,通过形成渲染树提交到c++的skia进行渲染,从dart层到c++层拥有很长的渲染链路,使用者必须对整个渲染链路有通盘深刻的理解,才能深刻此时此刻的内存使用情况。本文提出一种基于渲染树个数的方式寻找内存泄漏的解决方案。

发布于:6月以前  |  698次阅读  |  详细内容 »

开始使用 Flutter 构建 Windows 桌面应用吧!

我们的使命是为开发者提供一个开源的高效框架,帮助他们在任何平台上构建美观的原生应用。截至目前,我们已经为 Android 和 iOS 带来了生产级别的支持,发布了 8 个稳定版本,仅在 Google Play 商店中就有超过 10 万款应用使用 Flutter。我们在继续努力,将支持范围扩展至 web、macOS 和 Linux 等其他平台。如今,Flutter 的另一个目标,即支持 Windows 的 Flutter Alpha 版本已经发布。

发布于:6月以前  |  734次阅读  |  详细内容 »

如何有效定位Flutter内存问题?

内存水位升高导致的稳定性问题严重影响app用户体验,所以开发者们非常关注Flutter的内存表现。随着Flutter业务越来越多,闲鱼也面临着oom导致的crash率提升的问题,下面我们结合项目中实际遇到的内存问题和解决思路跟大家分享下flutter内存优化的经验。

发布于:6月以前  |  630次阅读  |  详细内容 »

推荐5个Flutter重磅开源项目!

大家好,我是hub哥,近年来,随着移动智能设备的快速普及,移动多端统一开发框架已成为一个热门话题。这里为大家整理了5个Flutter优质的开源项目,希望对大家有帮助

发布于:9月以前  |  1498次阅读  |  详细内容 »

Flutter在PLUS业务中的探索和实践

2016年京东为向核心客户提供更优质的购物体验,特别推出京东PLUS会员,旨在全方位提升和丰富用户网购体验,目前京东PLUS会员已成为电商行业付费人数最多的会员体系。作为PLUS的前端开发,我们思考最多的就是如何让页面更快更好的呈现在用户面前,如何用技术为用户提供最好的购物体验。

发布于:9月以前  |  1084次阅读  |  详细内容 »

京东技术中台Flutter实践之路(二)

发布于:9月以前  |  1349次阅读  |  详细内容 »

首发 | 闲鱼公开多年 Flutter 实践经验

Flutter从诞生到现在,已经成为了跨端开发的领跑者。闲鱼应用在flutter能够以模块形式存在前,进行了很长时间的混合app架构的探索,对原生工程进行较多改动,在官方推出flutter模块模式后,我们进行了大量调研,最终推出了一套开箱即用的混合工程脚手架flutter-boot,帮助大家快速搭建混合工程。

发布于:9月以前  |  1092次阅读  |  详细内容 »

打破重重阻碍,Flutter 和 Web 生态如何对接?

Flutter 设计之初是不考虑 Web 生态的,原因很简单:两种技术设计理念不同,强行融合很可能让彼此都丧失了优势。但是业界又有很多团队在做这种尝试,说明需求是存在的。今天,阿里无线开发专家门柳就来手把手教如何实现 Flutter 和 Web 生态的对接?

发布于:9月以前  |  1072次阅读  |  详细内容 »

"零"学习成本:使用 Web 标准开发动态化 Flutter 应用

Kraken 是由淘系技术部前端架构团队开发的一个基于 Flutter 的动态化框架,本文将带大家了解和认识 Kraken,分享 Kraken 的一些设计思想以及 Flutter 和 Web 技术对接的实践。

发布于:9月以前  |  978次阅读  |  详细内容 »

一文看完阿里巴巴 AliFlutter 客户端研发体系

Flutter 是开源的 UI 工具包,其能够帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。Flutter 组件采用现代响应式框架构建,中心思想是用组件 (widget) 构建 UI。淘宝终端技术部无线技术专家王康从 Flutter 的原理出发,介绍了 Flutter 的原理、业内现状,以及阿里巴巴在 Flutter 上所做的深度实践和探索。

发布于:9月以前  |  1117次阅读  |  详细内容 »

最多阅读

Flutter的手势GestureDetector分析详解 1年以前  |  4159次阅读
Flutter插件详解及其发布插件 1年以前  |  3655次阅读
在Flutter中添加资源和图片 2年以前  |  3455次阅读
发布Flutter开发的iOS程序 2年以前  |  2695次阅读
Flutter 状态管理指南之 Provider 1年以前  |  2422次阅读
在Flutter中发起HTTP网络请求 2年以前  |  2358次阅读
Flutter for Web详细介绍 1年以前  |  2300次阅读
使用Inspector检查用户界面 2年以前  |  2287次阅读
Flutter Widget框架概述 2年以前  |  2138次阅读
JSON和序列化 2年以前  |  1965次阅读
Flutter框架概览 2年以前  |  1960次阅读
为Flutter应用程序添加交互 2年以前  |  1951次阅读
Flutter路由详解 1年以前  |  1920次阅读
使用自定义字体 2年以前  |  1825次阅读
处理文本输入 2年以前  |  1814次阅读
编写国际化Flutter App 2年以前  |  1760次阅读
使用包来开发Flutter应用 2年以前  |  1738次阅读
发布Flutter开发的Android程序 2年以前  |  1731次阅读