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

今天,我们正式宣布 Flutter 2 重大升级, 使开发人员能够为任何平台创建美观、快速且可移植的应用程序。借助 Flutter 2,您可以使用相同的代码库将本机应用程序发布到五个操作系统:iOS,Android,Windows,macOS 和 Linux;以及针对 Chrome,Firefox,Safari 或 Edge 等浏览器的 Web 体验。Flutter 甚至可以嵌入到汽车,电视和智能家电中,为环境计算世界提供普遍且可延展的体验。


Flutter 2 logo

我们的目标是从根本上改变开发人员对构建应用程序的看法, 不从您要定位的平台开始,而要从您要带来的体验开始。Flutter 使您可以在品牌和设计走在前列的情况下,手工创造 美好 的体验。Flutter 速度很快,可以将源代码编译为机器代码, 同时由于我们有着可维持状态的热重载的支持,您仍然可以在正式环境的 提升开发生产力, 在应用程序运行时您可以进行更改并立即查看结果。Flutter 是 开放 的,成千上万的贡献者为核心框架添砖加瓦, 并通过软件包的生态系统对其进行了扩展。


5 tablet and mobile device screens

今天发布 的 Flutter 2 中, 我们将 Flutter 从移动框架扩展为 可移植 框架, 让您的应用程序可以在各种不同的平台上运行,几乎没有妥协。仅 Play 商店就已经有 超过 15 万个 Flutter 应用程序, 并且每个应用程序都可以通过 Flutter 2 免费升级, 因为它们现在可以在不重写的情况下,扩展到桌面端和 Web 平台。

来自世界各地的客户正在使用 Flutter, 包括一些流行的应用程序, 如 微信、Grab、Yandex Go、Nubank、Sonos、Fastic、Betterment 和realtor.com。在 Google,我们依赖 Flutter, Google 的一千多名工程师正在使用 Dart 和 Flutter 构建应用程序。实际上,其中许多产品已经交付,包括 Stadia,Google One 和 Google Nest Hub。


Logos of Google apps powered by Flutter

几个月前,Google Pay——其团队的标杆应用完全改为用 Flutter 开发, 他们已经在生产力和质量上取得了重大进步。通过统一代码库,该团队消除了平台之间的功能差异,并消除了超过一百万行代码。Google Pay 团队同时说,其工程师的效率要高得多,技术债大大减少, 统一发布流程(如跨 iOS 和 Android 的安全性审查和试验)得以实现。

Flutter Web

Flutter 2 中最激动人心的也许是 对 Web 的生产支持

Web 的早期基础是以文档 (Documents) 为中心的。但是,Web 平台经过多年发展,平台 API 已经非常丰富, 这些 API 可以使用有硬件加速的 2D 和 3D 图形, 以及灵活的布局和绘画 API, 来制作高度复杂的应用程序。Flutter 的 Web 基于这些创新,提供了 以应用程序为中心 的框架, 该框架充分利用了现代 Web 所提供的所有优势。

首个版本将特别关注三种应用程序场景:

  • 渐进式 Web 应用程序 (PWAs),将 Web 的与桌面应用程序的功能结合在一起。
  • 单页应用程序(SPAs),一次性加载并与网络服务之间进行数据传输。
  • 将现有的 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。


iRobot interface with Flutter

另一个例子是 Rive,Rive 为设计师提供了一个强大的工具, 用于创建可发布到任何平台的自定义动画。他们的 更新后的 Web 应用程序 现已发布 beta 版本, 完全由 Flutter 构建,是 Flutter 为大家献上的一封情书。


Rive interface with Flutter

您可以在 我们的文章中找到有关 Flutter Web 的更多信息。

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

除了传统的移动设备和 Web 之外,Flutter 越来越多地扩展到其他设备类型, 我们在今天的主题演讲中重点介绍了三个伙伴关系,这些伙伴关系证明了 Flutter 的延展性。

首先,Canonical 与我们合作将 Flutter 带入桌面端, 工程师们贡献了代码来支持 Linux 上的开发和部署。在今天的活动中,Ubuntu 团队展示了由 Flutter 重写的新安装程序的早期版本。对于 Canonical 至关重要的是,它们可以在各种硬件配置上提供坚如磐石而又优美的体验。展望未来,Flutter 是 Canonical 未来创建桌面和移动应用的默认选择


Flutter is the default choice for future desktop and mobile apps created by Canonical.

其次,微软 正在继续扩大对 Flutter 的支持。除了 正在进行的合作的在 Flutter 中提供高质量的 Windows 支持外, 今天微软还将发布 Flutter 引擎对新型的可折叠 Android 设备的支持。这些设备引入了新的设计模式,其应用程序可以扩展内容,或利用双屏特性提供并行体验。在 Surface 工程团队的博客文章 中, 他们展示了他们的工作成果,并邀请其他人加入他们, 共同完成适用于 Surface Duo 和其他设备的高质量实现。


Windows support in Flutter

最后,世界上最畅销的汽车制造商 丰田汽车 宣布了其计划, 通过构建由 Flutter 提供动力的信息娱乐系统,将最佳的数字体验带入车辆。使用 Flutter 标志着与过去开发车载软件的方式大相径庭。丰田之所以选择 Flutter,是因为其高性能和经验的一致性, 快速的迭代和开发人员的人机工程学以及智能手机层的触摸机制。通过使用 Flutter 的 embedder API, 丰田可以针对车载系统的独特需求量身定制 Flutter。


Toyota using Flutter in vehicle infotainment systems

我们很高兴继续与丰田和其他公司合作,将 Flutter 应用于汽车、电视和其他嵌入式设备, 我们希望在未来几个月中可以分享更多示例。

持续发展的 Flutter 生态系统

现在,有超过 15,000 个 Flutter 和 Dart 软件包:来自 亚马逊、微软、Adobe、阿里巴巴、eBay 和Square等公司;一些重要的软件包,如Lottie、Sentry 和SVG, 以及 Flutter Favorite软件包,如sign_in_with_apple、google_fonts、geolocator 和sqflite。

今天,我们宣布推出Google 移动广告 Flutter 插件的测试版, 这是一个可与 AdMob 和 AdManager 配合使用的新 SDK, 可提供多种广告格式,包括横幅广告、嵌入式广告、原生广告和激励视频广告。我们一直在与几个主要客户一起试用该 SDK, 例如拉丁美洲最大的独立艺术家音乐平台 SuaMúsica, 现在我们准备开放 Google 移动广告 Flutter SDK 以便更广泛地使用。


Google Mobile Ads SDK for Flutter

我们还将宣布对 Flutter 插件的一些核心 Firebase 服务进行更新:身份验证、云数据库、无服务器云函数、云消息、云存储 和 崩溃分析, 包括对健全空安全的支持,以及对云消息软件包的全面检查。

Dart:Flutter 背后的秘制调料

先前我们提到,Flutter 2 可移植到许多不同的平台和外形上。轻松过渡到支持 Web、桌面和嵌入式设备的过程, 很大程度上要归功于 Dart, 它是一门针对多平台开发进行了优化的 Google 编程语言。

Dart 结合了一套独特的功能来构建应用程序:

  • 不会突兀的可移植性,其编译器可为移动端和桌面端生成高性能的 Intel 和 ARM 机器代码, 并为 Web 提供经过严格优化的 JavaScript 输出。相同的Flutter框架源代码可编译到所有这些目标。
  • 在桌面和移动设备上可维持状态的热重载的迭代开发, 以及为现代UI编程的异步,并发模式设计的语言构造。
  • 在所有平台上的 Google 级性能, 健全的空安全保证了运行时和开发过程中的可空性约束。

没有其他语言如 Dart 这般结合了所有功能, 也许这就是为什么 Dart 是GitHub 上发展最快的语言之一的原因。

Dart 2.12 现已可以使用,是我们自 2.0 版以来最大的发行版, 支持 健全的空安全 模式。健全的空安全可以消除可怕的空指针引用异常,从而在开发和运行时提供了保证, 即只有当开发人员明确需要可空类型时,类型才能包含 null 值。最重要的是,此功能不是一项破坏性更改:您可以按照自己的步调将其逐步添加到代码中,并可以使用迁移工具在准备就绪时为您提供帮助。

今天的更新还包括 FFI 的稳定实现, 使您可以编写可与基于 C 的 API 交互的高性能代码。用 Flutter 编写的新的集成开发人员和分析器工具;以及许多性能和大小上的改进, 这些改进可以进一步升级代码,而无需重新编译即可。有关更多信息, 请参阅 Dart 2.12 发布博客文章。

Flutter 2:现已可用

关于 Flutter 2,要说的事情一言难尽。实际上,已合并的拉取请求的原始列表文档长达 200 页!请访问 专门介绍 Flutter 2 的文章, 以获取有关许多新功能和性能改进的信息, 我们认为 Flutter 开发人员将会非常满意,并立即下载新版。


image of companies using Flutter 2

我们还有一个主要的新的示例应用,它展示了刚才提到的所有内容, 该样本是我们与位于加拿大埃德蒙顿的屡获殊荣的设计团队gskinner 合作构建的。Flutter Folio 是一款剪贴簿应用程序, 为您所有的设备而设计。小屏幕下是专为捕获内容而设计的;大屏幕支持使用桌面端和平板电脑专用的习惯进行编辑;Web 平台是为共享内容而量身定制的。所有这些量身定制的内容都使用着相同的代码库,该代码库是开源的,可供您参考。

如果您还没有尝试过 Flutter,您会发现它对您的应用程序开发体验而言是一次重大升级。在 Flutter 中,我们提供了一个开放源代码工具包, 用于通过单个代码库构建针对移动、桌面端、Web 和嵌入式设备的美观而快速的应用程序, 这些应用程序既可以满足 Google 的苛刻需求,同时也能满足我们客户的需求。

Flutter 是免费且开源的。我们很高兴看到您使用 Flutter 2 构建产品!


https://mp.weixin.qq.com/s/QJ1bp9_OPBIUfZ9uM-TzbA

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

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

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

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

使用 Flutter 加速应用开发

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

深入分析 Flutter 渲染性能

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

深入分析 Flutter 渲染性能

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

Flutter 不是真正的跨平台框架

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

Flutter 2 来了!

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

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

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

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

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

使用 flutter_driver 进行集成测试

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

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

详解: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月以前  |  1115次阅读  |  详细内容 »

最多阅读

Flutter的手势GestureDetector分析详解 1年以前  |  4158次阅读
Flutter插件详解及其发布插件 1年以前  |  3654次阅读
在Flutter中添加资源和图片 2年以前  |  3454次阅读
发布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次阅读