作者 / 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 Forward 活动精彩回顾

突破性的图形功用

长期以来,因为涉及构建笼统层这个难题,跨途径结构一向需要在视觉方面做出妥协。Flutter 采用了一种不同于大多数结构的办法,凭借自有烘托层,可在所有设备上供给硬件加速的图形和共同的视觉外观。今后,咱们将着力展开 突破性的图形功用,扩展 Flutter 在这一领域的现有优势。

在 Flutter Forward 活动中,咱们展现了 Flutter 的下一代烘托引擎 Impeller 获得的更多开展。Impeller 专为 Flutter 优化,进步图形管线方面的灵敏性和控制力,并为咱们带来了新的时机。Impeller 运用预编译的着色器,可削减运转时由着色器编译引起的丢帧,从而完成愈加可猜测的功用。它利用了 Metal 和 Vulkan 的基元类型,二者分别是 iOS 和 Android 中的现代底层图形 API。以及有效地运用了并发机制,将同一帧的作业负载涣散到多个线程中。

与 Flutter 共创未来 | Flutter Forward 活动精彩回顾

△ Impeller 为 Wonderous 这类要求较高的图形运用带来了丝般顺滑的功用。Wonderous 是一款带您探究世界奇观的精巧运用,这里展现了它的最新版别,可依据不同的设备和外形标准调整其界面。您可前往 wonderous.app 下载该运用。

除了供给流通的界面,在某些情况下,Impeller 还可以明显进步功用。下面这个视频中的 demo 就完美诠释了这一点。左边是一个运用 SVG 剪切构建的万花筒运用,该运用运用了当时的默许烘托器。向下滚动页面时,烘托所用时间会超越每帧的预算,导致功用下降、帧率跌至 7-10 fps。右侧是同一个运用,但采用了 Impeller,能以 60 fps 的帧率流通烘托。观看 万花筒运用示例,展现了运用 Impeller 可进步图形功用 演示视频了解更多概况。

从头开始构建带来的一个好处是,Impeller 的架构可支撑全新的运用用例。得益于新引进的 对自定义着色器的支撑,咱们现已有了一些 令人惊叹的新 demo,展现了与 Flutter widget 层次结构的无缝集成。此外,咱们并未止步于移动端,还在 Web 端发布了对自定义着色器的前期支撑。现在您可以运用同一套代码,在 iOS、Android 和浏览器中供给硬件加速的体会。

与 Flutter 共创未来 | Flutter Forward 活动精彩回顾

△ Flutter 现在支撑在 Web 端运用像素着色器,让您可完成各种炫酷的视觉作用。(图片供给者: Erick Ghaumez)

别的,咱们现已着手展开 使 Flutter 支撑 3D 图形 的前期作业。在主题演讲中,咱们演示了您可以导入运用 Blender 创立的模型,乃至可以利用热重载技能,在 Blender 中实时迭代模型,然后在正运转的运用中检查成果。虽然该功用还处于前期阶段,但咱们对所完成的初始功用以及将 3D 集成到其他 Flutter 体会中的潜力满怀等待。

与 Flutter 共创未来 | Flutter Forward 活动精彩回顾

△ 这个风趣的 Dash demo 展现了 Impeller 让 Flutter 可以烘托 3D 图形。

支撑 3D 图形和自定义着色器后,跨途径界面东西包可完成的图形功用达到了新高度。咱们非常等待看到您充分利用这些新推出的功用。

Web 运用和移动运用的无缝集成

虽然您可以彻底用 Flutter 和 Dart 编写运用,但简直所有重要的项目都会涉及调用原生途径的功用。在 Web 端,Flutter 或许会用作大型运用的一个嵌入式组件;在移动端,运用或许需要调用体系 API 或其他言语的代码。因而,咱们的第二个发力点便是 Web 运用和移动运用的无缝集成

在 Web 端,咱们将会推出一项名为 元素嵌入 的新功用,可用于将 Flutter 内容增加到任何规范 Web

中。以这种办法嵌入时,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 共创未来 | Flutter Forward 活动精彩回顾

△ 利用 “元素嵌入” 功用,您可以将 Flutter 嵌入

元素中并运用 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 可以在此情形中为各类需求供给强壮的界面东西包。

与 Flutter 共创未来 | Flutter Forward 活动精彩回顾

△ 一台正在运转 Dart 控制台运用的 ClockworkPi DevTerm R-01 (一款实验性 RISC-V 电脑)

持续重视开发者体会

开发者生产力是上述一切的基础,Flutter 与生俱来的有状态热重载等功用赋予了它高效的特点。咱们第四个也是最终一个发力点,便是将 持续重视 Flutter 和 Dart 开发者体会

一向以来咱们都在为推进 Dart 言语的健康展开做出努力。在 Flutter Forward 活动中,咱们带大家抢鲜了解了一些重要的新 Dart 言语功用的开始开展。对 records 和 patterns 的前期支撑现已登陆开发途径,这两项新的增强功用协同运用可以发挥出良好作用。

与 Flutter 共创未来 | Flutter Forward 活动精彩回顾

△ 一个简略的 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 共创未来 | Flutter Forward 活动精彩回顾

除了本身拟定的开发方向,咱们也很高兴看到 Flutter 生态体系持续蓬勃展开。例如,FlutterFlow 是一个用于开发原生移动运用的低代码构建东西,而 Widgetbook 供给灵敏的东西,供规划师和开发者协作开发用户界面。

最终,很高兴借此时机来到肯尼亚,领略了当地开发者的企业家精神和才调。非洲的 Flutter 社区充满活力;仅肯尼亚的 Flutter 用户群组就有超越 1,000 名开发者。咱们很高兴 Flutter 可以为非洲的开发者带来新的机会,让他们可以参加到快速增长的运用经济中。Klasha 便是诠释这一前景的优异案例。这家公司凭借 Flutter 快速进入市场,并处理了本地用户的问题。下面的视频介绍了他们运用 Flutter 的体会: Klasha (https://klasha.com/) 的故事以及他们运用 Flutter 的体会。Klasha 是一家科技初创公司,其宗旨是让非洲顾客可以顺利地买到世界各地的产品。