Flutter Web 支持现已进入稳定版

Flutter 2 的 web 支持已进入稳定版,允许开发者将应用扩展到 web 平台,触及更广泛的受众。此版本关注渐进式 web 应用、单页应用和移动应用的 web 扩展,提供了 HTML 和 CanvasKit 两种渲染器,以及针对 web 的性能优化、特色功能和插件支持。现在,开发者可以使用同一份代码库构建 iOS、Android 和 web 应用。
摘要由CSDN通过智能技术生成

作者 / Mariam Hasnany, Product Manager, Flutter

我们对 Flutter 的愿景是成为一个可移植的 UI 框架,在全平台上构建精美的应用体验。做为 Flutter 2 发布内容的一部分,Flutter 的 web 支持已经抵达稳定版里程碑。

Flutter 的首个版本支持 iOS 和 Android,开发者们已经用它在移动应用商店发布了超过 15 万个应用。现在,随着 web 支持的加入,这些应用可以触达更广泛的受众,同时也开辟了在 web 上建立交互体验的新途径。

在此次初始版本的 web 支持中,我们主要关注三个应用场景:

  • 渐进式 web 应用 (Progressive web apps, PWA),兼具 web 的高覆盖面与桌面应用的强大功能。

  • 单页应用 (Single page apps, SPA),只需一次加载,并与互联网服务动态互传数据。

  • 将现有 Flutter 移动应用拓展到 web,在两个平台共享代码。

这篇文章介绍了我们迄今为止的工作成果,并分享了几个案例,意在帮助开发者在自己的应用中活用 Flutter 对 web 的支持。 

△ iRobot Education 使用 Flutter 开发了 iRobot Coding 应用,通过此 web 应用向大众提供编程学习体验

  • iRobot Education

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

  • iRobot Coding 应用

    https://code.irobot.com/

Web 之旅

如今的 web 平台比以往任何时候都要丰富多彩,开发者可以使用的工具包括: 硬件加速的 2D 和 3D 图形,离线功能和安装体验,以及对底层操作系统和硬件的访问等。在 web 这个底层平台上已经建立起了种类繁多的框架,因此,开发者在创建 web 应用时拥有极大的灵活性。

  • WebGL: 用于 web 的 2D 和 3D 图形

    https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API

  • PWA

    https://web.dev/progressive-web-apps/

  • 对底层操作系统和硬件的访问

    https://web.dev/fugu-status/

  • 种类繁多的框架

    https://vuejs.org/

    https://angular.io/

    https://flask.palletsprojects.com/

    https://reactjs.org/

Flutter 是用 Dart 编写的,而 Dart 能编译成 JavaScript,所以我们的下一步自然就是要探讨支持 web 平台的可能性。这符合我们的愿景,也就是提供一个可移植的框架,方便您在任何能描绘像素的地方构建出精美的 UI。

  • Dart

    https://dart.cn/

我们的方法是,建立一个在所有平台上都能使用的一致的工具包 (而不是建立两个有着各种微妙差异的独立框架),以确保开发者的代码运行时不会出现意外。

Flutter 框架由一系列层结构组成,其中包含:

  • 框架,用于为 widget、动画和手势等常见的习惯用法提供抽象

  • 引擎,使用公开的系统 API 在目标设备上进行渲染

  • 技术概览: 层结构

    https://flutter.cn/docs/resources/technical-overview#layer-cakes-are-delicious

框架本身采用 Dart 编写,大约 70 万行 Flutter 框架核心代码在所有平台上相同: 包括移动端、桌面端和现在的 web 端。对于您的代码来说也是这样,我们使用 Dart 开发编译器 (dartdevc) 或 Dart 部署编译器 (dart2js) 将您的代码编译成 JavaScript,这些 JavaScript 代码可以托管在服务器上。

  • dartdevc 命令

    https://dart.cn/tools/dartdevc

  • dart2js 命令

    https://dart.cn/tools/dart2js

由于 Dart 拥有将 Flutter 框架 (以及开发者的应用代码) 编译成 JavaScript 的能力,我们对 web 的支持工作就变成了用映射 web 平台 API 的代码来取代移动应用所使用的底层 C++ 渲染引擎。Flutter 并不会简单地将 widget 移植为 HTML 里的等价组件,Flutter 的 web 引擎为开发者提供了两种渲染器: 一个是针对尺寸和兼容性进行优化的 HTML 渲染器,另一个则是使用 WebAssembly 和 WebGL 通过 Skia 绘图命令向浏览器画布进行渲染的 CanvasKit 渲染器。

我们对 Flutter 的要求是,提供一种针对 web 平台进行开发的新方式,在现有基础上提供新见解,为所有人提供更棒的 web 体验。

发布生产环境可用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值