Flutter 2 正式发布!

浩浩
• 阅读 1263

昨天凌晨,Flutter 2 正式发布: 开发者为_任何_平台创建美观、快速且可移植应用的能力得以更上一层楼。通过 Flutter 2,您可以使用相同的代码库为五种操作系统构建原生应用: iOS、Android、Windows、macOS 和 Linux;以及为 Chrome、Firefox、Safari 和 Edge 等浏览器打造 web 体验。Flutter 甚至可以嵌入到汽车、电视和智能家电,为环境计算提供最普适、可移植的体验。

Flutter 2 正式发布!

我们的目标是_从根本上改变_开发者的应用构建思路,让体验先于平台。Flutter 可以让您尽情雕琢精美的应用体验,畅快表达自己的品牌和设计风格。Flutter 可以将您的源代码编译为机器码,并快速运行,同时借助有状态热重载功能为您带来了解释环境的高效生产力,让您可以在应用运行时做出更改并立即查看结果。而且 Flutter 是开源的,有成千上万的贡献者在为核心框架添砖加瓦,并围绕其打造了包含海量 package 的生态系统。

Flutter 2 正式发布!

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

Flutter 2 正式发布!

几个月前,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 的理由以及使用情况。

Flutter 2 正式发布!

另一个例子是 Rive,他们为设计师打造的强大工具可以将创建的自定义动画发布到任意平台。其新版 web 应用完全由 Flutter 构建,现已进入 Beta 阶段,这也是 web 平台最能展现 Flutter 特色的体验之一。

Flutter 2 正式发布!

您可以从 Flutter web 发布文章中了解更多信息。

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

除了传统的移动设备和 web 之外,Flutter 正越来越多地覆盖到其他类型设备。Flutter Engage 主题演讲中重点介绍了三位合作伙伴,以展示 Flutter 的可移植性。

第一位合作伙伴,Canonical 与我们联手将 Flutter 带到桌面,Canonical 工程师贡献的代码使得 Flutter 开发者能在 Linux 上进行开发和部署。在活动中,Ubuntu 团队展示了使用 Flutter 重写的新安装程序的早期演示版。对 Canonical 来说,在多种硬件配置上提供稳如磐石且美妙的体验至关重要。未来,Flutter 将成为 Canonical 打造桌面和移动应用的首选

Flutter 2 正式发布!

第二位合作伙伴 Microsoft 正在继续扩大对 Flutter 的支持。除了持续与我们合作为 Flutter 提供高质量的 Windows 支持外,Microsoft 还发布了对 Flutter 引擎的贡献: 支持新兴的可折叠 Android 设备。这些设备带来了新的设计模式,应用可以扩展内容,或者利用双屏特性提供窗口并排体验。Surface 工程团队在一篇博文中展示了其工作成果,并邀请大家加入他们的行列,共同完成适用于 Surface Duo 和其他设备的高质量解决方案。

Flutter 2 正式发布!

第三位合作伙伴,全球畅销汽车制造商之一 Toyota 宣布,计划构建由 Flutter 驱动的信息娱乐系统,打造最佳的汽车数字体验。使用 Flutter 标志着车载软件的开发方式向着未来迈进了一大步。Toyota 之所以选择 Flutter,是因为其高性能和体验的一致性,快速迭代的能力和极高的开发者工效,以及智能手机级别的触控体验机制。通过使用 Flutter 的嵌入器 API,Toyota 能够根据车载系统的独特需求对 Flutter 进行定制。

Flutter 2 正式发布!

我们很荣幸与 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 开发者采用。

Flutter 2 正式发布!

我们还更新了几项核心 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 2 正式发布!

我们还为大家准备了一款全新的示例应用,Flutter Folio,由我们与加拿大埃德蒙顿的获奖设计团队 gskinner 合作完成,这个示例展示了我们刚刚提到的一切内容。Flutter Folio 是一款能在您所有的设备上运行的剪贴簿应用。在小屏幕上体验时会强调展示内容;而在大屏幕上体验时则支持以桌面和平板电脑的习惯用法进行内容编辑;web 体验则着重强调分享。这些定制化的体验都共享相同的开源代码库,可供您自由浏览。

Flutter 2 正式发布!

如果您尚未尝试过 Flutter,我们相信它将为您的应用开发体验带来巨大的提升。Flutter,一个开源工具包,让您通过单一代码库为移动、桌面、web 和嵌入式设备打造美观、快速的应用,让您即便是在面对 Google 和广大用户的苛刻需求时也能游刃有余。

而且 Flutter 是免费和开源的。您会使用 Flutter 2 构建怎样精彩的应用呢?我们拭目以待!

Flutter 2 正式发布!


推荐阅读

Flutter 2 正式发布!

Flutter 2 正式发布!

Flutter 2 正式发布!

Flutter 2 正式发布! 点击屏末 *| * |** **访问 Flutter 开发者社区中文资源


Flutter 2 正式发布!

Flutter 2 正式发布!

Flutter 2 正式发布!

本文转自 https://mp.weixin.qq.com/s/tJe2ScLgKWFTybpBtDl2TA,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
2个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这