Flutter Web 的未来,Wasm Native 即将到来
Published on Jun 19, 2024
网页主要介绍了 Flutter Web 未来发展方向的变化,特别是 WebAssembly(Wasm) Native 的支持,以及 Dart 语言如何与 Wasm 结合,以及这些变化对 Flutter Web 性能和兼容性的提升。
摘要
文章由恋猫de小郭撰写,发表于 2024 年 4 月 1 日,讨论了 Flutter Web 的未来趋势。作者指出,Google I/O 发布的 Flutter 3.10 已经提及了 Flutter Web 将来会采用 Wasm Native 的方向。一年后,Flutter Wasm Native 通过 commit b8cd317 在 master 分支上移除了对 flutter build web --wasm
的实验性状态。目前,Flutter 和 Dart 支持在构建 Web 应用时将 WebAssembly 作为编译目标,但需要浏览器支持 WasmGC。Chromium 119 和 Firefox 120(有小问题)已经支持 WasmGC,而 Safari 尚未支持。
文章进一步解释了 Dart native 如何使得 Dart 代码能够直接编译为原生的 Wasm 代码,而不是之前的将 Dart 编译为 JS 的方式。这一变化使得 Size 显著减小,提高了性能。同时,Flutter Web 通过全新的 Dart Native 和 Skwasm 渲染引擎实现了多线程渲染支持,进一步提升了帧时间。
随着 Dart 3.3 的发布,Flutter Web 实现了双编译功能,能够生成 Wasm 和 JavaScript 输出,并在运行时根据浏览器的支持情况进行功能检测。此外,JavaScript interop 得到了改进,使得 Dart 开发者能够通过类型化 API 与 JavaScript 互操作。同时,package:web
替代了 dart:html
等库,未来的浏览器 API 支持将集中在 package:web
上。
文章最后总结,尽管 Wasm Native 的支持尚未普及,但 Flutter Web 的这些变化已经确定了其从「举棋不定」到「落子无悔」的转变,对于 Flutter Web 的未来持乐观态度。
观点
-
Flutter Web 的未来在于 Wasm Native:Flutter 团队将 Flutter Web 定位为一个围绕 CanvasKit 和 WebAssembly 等新兴 Web 技术进行架构设计的框架,而不是一个通用 Web 框架。
-
Dart 语言与 Wasm 的结合:随着 WasmGC 的垃圾收集实现的引入,Dart 开始支持直接编译为原生的 Wasm 代码,这是对性能和 Size 的显著提升。
-
性能提升和兼容性改善:全新的 Dart Native 和 Skwasm 渲染引擎支持多线程渲染,提高了帧时间;双编译功能和改进的 JavaScript interop 增强了与浏览器的兼容性。
-
对未来的乐观预期:尽管 Wasm Native 的普及仍需时间,但 Flutter Web 的这些变化已经标志着其向着更好的方向迈出了坚实的一步。
《Maeiee成长感悟》- 从北漂到准父亲的生活洞察
生活在快速节奏的都市,作为程序员和即将迎来人生新角色的我,经历了无数难忘的瞬间和深刻的思考。这些体验和感悟,我渴望与你分享。
《Maeiee成长感悟》是一个收集我所有重要生活事件和心得的地方。每一篇文章都是对过去经历的反思和对未来生活的展望,真实记录作为一个程序员、副业探索者、终身学习者、一个准爸爸和一个北漂的多重身份之间的平衡与挑战。
这里没有华丽的辞藻,只有最真实的思考和感受,希望它们能触动你的心弦,也许能在你的生活旅程中提供一些启示和慰藉。