共计 5577 个字符,预计需要花费 14 分钟才能阅读完成。
作者 / Google 开发者框架和语言 (含 Flutter、Dart 和 Go) 产品经理 & 用户体验总监 Tim Sneath
咱们很快乐能够在 Flutter Forward 流动 上分享咱们对 Flutter 的愿景。Flutter Forward 是在肯尼亚内罗毕以线上直播形式举办的开发者流动,世界各地的开发者可能亲自参加或者近程相聚,摸索 Flutter 的将来倒退方向。
Flutter 是一个界面工具包,它让利用开发者只需编写一套代码,即可构建挪动利用、Web 利用和桌面利用。您能够应用 Flutter 构建 粗劣好看 的利用,屏幕上的每一个像素尽在把握。Flutter 具备如下独特劣势:
- 疾速。反对硬件加速图形和原生编译的机器代码,可充分发挥手机或电脑硬件的计算能力。
- 高效。反对有状态热重载等技术,让您可立刻看到代码更改在利用中的实际效果。
- 可移植。应用一套源代码即可部署到多种平台,而不会出现意外状况。
- 开源。它是一个齐全开源的工具包,您无需领取许可费,也不必为相干开发工具付费。
事实证明 Flutter 深受欢送: 迄今为止已有超过 70 万款应用 Flutter 打造的利用上架。Flutter 的使用者中既有 志存高远的小型初创公司,也不乏 有要害需要的大型成熟企业。Flutter 的价值还让 Google 外部团队受害,Google 课堂 等团队借助 Flutter 为挪动和 Web 用户提供优质解决方案。咱们还在其余开发者工具中增加了对 Flutter 的反对,这些工具包含 Google Ads、Google Maps、Google Pay,当然还有 Firebase。观看 Google 课堂与 Flutter 视频理解更多详情。
借助 Flutter,咱们将同一性能的代码量缩减了 66%…这意味着各个平台上的 bug 数量缩小,将来的技术负债也更低。
Google 课堂软件工程师 Kenechi Ufondu
Flutter 的第一个版本提供了用于构建 Android 和 iOS 挪动利用的界面工具包。在 Flutter 3 中,咱们拓展了所反对的平台,不仅稳固反对 Windows、macOS、Linux 和 Web,还新增了对嵌入式平台的反对。在此基础上,咱们最新公布了稳固版本 Flutter 3.7,减少了许多新性能并做出了各种改良,包含引入新的 iOS 渲染引擎、加强对 Material 3 和 iOS 格调组件的反对、改善对国际化的反对、改良后盾解决以及对开发者工具做出更新。
在此次流动中,咱们的重点是 展望未来,带您领先理解咱们对 Flutter 的下一波发力点: 突破性的图形性能、Web 利用和挪动利用的无缝集成、对新兴架构的晚期反对,以及继续关注开发者体验。心愿咱们展现的这些将在将来几个月内逐渐推出的新性能,能让您对咱们描述的 Flutter 愿景充斥期待: 让 Flutter 成为一个弱小的工具包,助力开发者打造令人赏心悦目的优质用户体验,并灵便部署到诸多平台。
特地阐明: 咱们在这里事后介绍的性能仍处于开发阶段,可能会在将来几个月产生重大变更。在现阶段展现这些性能旨在让晚期采纳者有机会参加进来、做出奉献。
突破性的图形性能
长期以来,因为波及构建形象层这个难题,跨平台框架始终须要在视觉方面做出斗争。Flutter 采纳了一种不同于大多数框架的办法,借助自有渲染层,可在所有设施上提供硬件加速的图形和统一的视觉外观。今后,咱们将着力倒退 突破性的图形性能,扩充 Flutter 在这一畛域的现有劣势。
在 Flutter Forward 流动中,咱们展现了 Flutter 的下一代渲染引擎 Impeller 获得的更多停顿。Impeller 专为 Flutter 优化,进步图形管线方面的灵活性和控制力,并为咱们带来了新的机会。Impeller 应用预编译的着色器,可缩小运行时由着色器编译引起的丢帧,从而实现更加可预测的性能。它利用了 Metal 和 Vulkan 的基元类型,二者别离是 iOS 和 Android 中的古代底层图形 API。以及无效地使用了并发机制,将同一帧的工作负载扩散到多个线程中。
△ Impeller 为 Wonderous 这类要求较高的图形利用带来了丝般顺滑的性能。Wonderous 是一款带您摸索世界奇观的精美利用,这里展现了它的最新版本,可依据不同的设施和形状规格调整其界面。您可返回 https://wonderous.app 下载该利用。
除了提供晦涩的界面,在某些状况下,Impeller 还能够显著进步性能。上面这个视频中的 demo 就完满诠释了这一点。左侧是一个应用 SVG 剪切构建的万花筒利用,该利用应用了以后的默认渲染器。向下滚动页面时,渲染所用工夫会超过每帧的估算,导致性能降落、帧率跌至 7-10 fps。右侧是同一个利用,但采纳了 Impeller,能以 60 fps 的帧率晦涩渲染。观看 万花筒利用示例,展现了应用 Impeller 可进步图形性能 演示视频理解更多详情。
从头开始构建带来的一个益处是,Impeller 的架构可反对全新的应用用例。得益于新引入的 对自定义着色器的反对,咱们曾经有了一些 令人惊叹的新 demo,展现了与 Flutter widget 层次结构的无缝集成。此外,咱们并未止步于挪动端,还在 Web 端公布了对自定义着色器的晚期反对。当初您能够应用同一套代码,在 iOS、Android 和浏览器中提供硬件加速的体验。
△ Flutter 当初反对在 Web 端应用像素着色器,让您可实现各种炫酷的视觉效果。(图片提供者: Erick Ghaumez)
另外,咱们曾经着手发展 使 Flutter 反对 3D 图形 的晚期工作。在主题演讲中,咱们演示了您能够导入应用 Blender 创立的模型,甚至能够利用热重载技术,在 Blender 中实时迭代模型,而后在正运行的利用中查看后果。尽管该性能还处于晚期阶段,但咱们对所实现的初始性能以及将 3D 集成到其余 Flutter 体验中的后劲满怀期待。
△ 这个乏味的 Dash demo 展示了 Impeller 让 Flutter 可能渲染 3D 图形。
反对 3D 图形和自定义着色器后,跨平台界面工具包可实现的图形性能达到了新高度。咱们十分期待看到您充分利用这些新推出的性能。
Web 利用和挪动利用的无缝集成
只管您能够齐全用 Flutter 和 Dart 编写利用,但简直所有重要的我的项目都会波及调用原生平台的性能。在 Web 端,Flutter 可能会用作大型利用的一个嵌入式组件;在挪动端,利用可能须要调用零碎 API 或其余语言的代码。因而,咱们的第二个发力点就是 Web 利用和挪动利用的无缝集成。
在 Web 端,咱们将会推出一项名为 元素嵌入 的新性能,可用于将 Flutter 内容增加到任何规范 Web <div> 中。以这种形式嵌入时,Flutter 就变成了一个 Web 组件,能与 Web DOM 良好集成,甚至反对应用 CSS 选择器和转换来设置父 Flutter 对象的款式。
此外,咱们还对 js 软件包进行了一些重大更改,以便在 JavaScript 代码和 Dart 代码之间实现顺畅的互操作性。利用 js,您能够通过 @JSExport 属性为 Dart 代码中的任何函数增加正文,而后从 JavaScript 代码中进行调用。
这两项新性能相结合,使得 Flutter 可在 Web 端解锁一些令人期待的新用例。咱们在 Flutter Forward 流动中展现了一个 概念验证 demo,您能够看到一个嵌入在 HTML 网页中的简略 Flutter 利用。应用 CSS,咱们能够实现动画旋转成果;即便在旋转时,Flutter 内容也始终可供互动。该 demo 还展现了您能够应用 HTML 按钮和 JavaScript 事件处理脚本来扭转 Flutter 的状态,反之亦然。咱们认为,这项性能正式推出后,将在应用 Flutter 向现有 Web 利用减少互动方面,带来更多可能性。
△ 利用 “ 元素嵌入 ” 性能,您能够将 Flutter 嵌入 <div> 元素中并应用 CSS 来设置其款式。
在 Android 和 iOS 端,Flutter 始终反对应用平台渠道与零碎 API 集成。通过这些渠道您可应用基于音讯的办法,与用 Kotlin 或 Swift 等语言编写的代码进行通信。但这仍要求利用开发者精通多种语言,并须要大量样板代码。
咱们正着手钻研 一种新的零碎互操作性办法,以容许间接调用库。在 iOS 端,咱们在此前所做 FFI 工作的根底上实现 C 语言互操作性,增加了对 Swift 和 Objective-C 库的反对。在 Android 端,咱们应用 JNI 桥接到用 Kotlin 编写的 Jetpack 库。Dart 中新增了一个命令,可用于主动创立 binding 绑定以实现跨语言互操作,并相应地转换数据类。咱们心愿这项性能推出后,Flutter 开发者可能调用新的 Jetpack 或 iOS 库,而无需应用插件或学习不同的 API 语法,同时也极大地加重插件开发者的工作。您能够 查看咱们的示例 理解详情。
对新兴架构的晚期反对
得益于 Dart 对诸多处理器架构的广泛支持,以及高度优化的 JavaScript 编译器,Flutter 曾经能够在很多不同类型、不同形状规格的设施上运行。与此同时,也有一些优良的新架构逐步衰亡,因而咱们的第三个发力点就是 对新兴架构的晚期反对。
WebAssembly 作为一种平台中立的二进制指令格局,现在倒退曾经日渐成熟,在古代浏览器上取得了越来越多的反对。令人兴奋的是,WebAssembly 使得 Web 平台向 JavaScript 之外的其余语言敞开了大门。近几个月来,咱们与 Chrome 团队和其余 WebAssembly 合作伙伴携手,着力于对 Dart 等 垃圾回收语言的晚期反对。Chrome 的最新开发版中提供了一个 flag 标记,用于开启这个新的 WebAssembly 扩大。在 Flutter Forward 流动中,咱们颁布了对 从 Flutter 编译到 WebAssembly 的晚期反对,这使得咱们能够进一步优化 Web 端的速度和代码体积。
吸引开发者关注的另一种平台架构是 RISC-V,这是一种为宽泛应用而设计的开放式规范指令集架构 (ISA)。Android 团队最近 在反对 RISC-V 方面的工作 有所停顿。咱们也很快乐地发表 Dart 当初反对 RISC-V,相干工作的指标是让 Flutter 可能在陆续上市的 RISC-V 设施上运行。只管生产级 RISC-V 硬件仍处于起步阶段,但咱们仍然在 Flutter Forward 流动中展现了目前为止在 ClockworkPi DevTerm Kit R-01 上获得的停顿,它是一个运行 Linux 的自组装便携式终端设备。咱们认为在嵌入式场景中,尤其应该反对 RISC-V,Flutter 能够在此情景中为各类需要提供弱小的界面工具包。
△ 一台正在运行 Dart 控制台利用的 ClockworkPi DevTerm R-01 (一款实验性 RISC-V 电脑)
继续关注开发者体验
开发者生产力是上述所有的根底,Flutter 与生俱来的有状态热重载等性能赋予了它高效的属性。咱们第四个也是最初一个发力点,就是将 继续关注 Flutter 和 Dart 开发者体验。
始终以来咱们都在为推动 Dart 语言的衰弱倒退做出致力。在 Flutter Forward 流动中,咱们带大家抢鲜理解了一些重要的新 Dart 语言性能的初步停顿。对 records 和 patterns 的晚期反对现已登陆开发渠道,这两项新的加强性能协同使用能够施展出良好效果。
△ 一个简略的 records 和 patterns 示例,可返回和接管多个函数参数。
此外,咱们还 正式公布了 Dart 3,标记着咱们将健全的空平安引入 Dart 语言的工作交出了圆满答卷。Dart 3 还移除了其余一些早已弃用的性能,更加现代化。咱们已开始公布 Dart 3 的 Alpha 版本及对应的 Flutter 版本,不便开发者测试软件包和利用。如需具体理解 Dart 3,您能够参阅 Dart 频道中公布的博文。
当然,咱们也在着力晋升 Flutter 的开发者体验。继去年咱们 在 I/O 大会上发表推出的 休闲游戏工具包大获胜利之后,咱们公布了 新闻工具包 的第一个版本,这将减速新闻公布商和其余内容提供方的挪动利用开发,让他们无需从头开始设计利用就能触达挪动端用户。它蕴含了打造以新闻报道为核心的利用所需的所有性能,包含导航和搜寻、身份验证、广告植入、告诉、档案和订阅,同时纳入了依据 Google 新闻打算的研究成果确定的最佳实际。咱们要分享三个应用该工具包构建利用的非洲晚期采纳者的故事,他们别离是摩洛哥最驰名的新闻网站之一 Hespress、尼日利亚的热门体育网站 Bold Sports 以及肯尼亚历史最悠久的报纸《The Standard》。观看三个非洲新闻公布商的故事,理解他们作为 Google 新闻工具包晚期采纳者的体验。
携手前行
衷心希望您能和咱们一样,对 Flutter 的将来倒退满怀期待。咱们将持续着力晋升外围开发者体验,同时进行一些基础性改良,让所有人都能顺畅地应用 Flutter 打造更杰出的体验。
下图对咱们的倒退方向进行了总结:
除了本身拟定的开发方向,咱们也很快乐看到 Flutter 生态系统持续蓬勃发展。例如,FlutterFlow 是一个用于开发原生挪动利用的低代码构建工具,而 Widgetbook 提供灵便的工具,供设计师和开发者合作开发用户界面。
最初,很快乐借此机会来到肯尼亚,领略了当地开发者的企业家精力和才华。非洲的 Flutter 社区充满活力;仅肯尼亚的 Flutter 用户群组就有超过 1,000 名开发者。咱们很快乐 Flutter 可能为非洲的开发者带来新的时机,让他们能够参加到快速增长的利用经济中。Klasha 就是诠释这一前景的优良案例。这家公司借助 Flutter 疾速进入市场,并解决了本地用户的问题。上面的视频介绍了他们应用 Flutter 的体验: Klasha (https://klasha.com/) 的故事以及他们应用 Flutter 的体验。Klasha 是一家科技初创公司,其主旨是让非洲消费者可能顺畅地买到世界各地的商品。