整理:郑丽媛
今日,谷歌重磅发布了下一代 Flutter —— 专为 Web、移动和桌面而构建的 Flutter 2!
作为谷歌免费开源的 UI 工具包,Flutter 帮助许多开发者构建了多平台应用,支持移动、Web、桌面和嵌入式平台,仅在 Google Play Store 平台上就有已超过 15 万个基于 Flutter 开发的应用,国内我们熟知的闲鱼 App、以及“国民应用”微信,均使用了 Flutter 进行开发。
Flutter 的重大升级版本 Flutter 2 为了从根本上改变开发者对构建应用的看法,将 Flutter 从移动开发框架扩展成可移植框架,因而开发者无需重写代码即可将应用扩展至桌面或网页。此外,利用 Flutter 2 还能实现许多功能:
- 开发者可使用相同的代码库,将本地应用发布到五个操作系统上:iOS、Android、Windows、macOS 和 Linux;
- 针对 Chrome、Firefox、Safari 或 Edge 等浏览器提供不同的网络体验;
- List itemFlutter 还可以嵌入汽车、电视和智能家用电器。
那么 Flutter 2 具体有哪些新变化呢?
Flutter 2 对 Web 的支持
本次更新最大的变化大概就是 Flutter 2 对构建 Web 应用的支持。
与早期 Web 不同,目前的 Web 平台已发展为包含更丰富的平台 API,可以使用硬件加速的 2D 和3D 图形以及灵活的布局等来支持各种高度复杂的应用。Flutter 2 的 Web 支持正是基于这些创新,提供了一个以应用程序为中心的框架,充分利用现代 Web 提供的所有功能。
Flutter 2 对此主要关注三个应用场景:
- 渐进式 Web 应用程序(PWA),将 Web 的访问范围与桌面应用程序的功能结合在一起。
- 单页应用程序(SPA),加载一次并与 Internet 服务之间进行数据传输。
- 将现有的 Flutter 移动应用移植到 Web,实现一套代码,两端运行。
除了对 Web 的支持,Flutter 2 还在性能优化上取得了不错的进展,例如新增了一个用 WebAssembly 构建、由 Canvaskit 驱动的渲染引擎。在提供最佳 Web 平台方面,Flutter 2 中也添加了文本自动填充功能、对地址栏 URL 和路由的控制以及 PWA 清单。此外,由于桌面浏览器和移动浏览器同等重要,Flutter 2 中还新增了交互式滚动条和键盘快捷键、桌面模式下的默认内容密度以及屏幕阅读器对 Windows,macOS 和 Chrome OS 上可访问性的支持。
目前已有一些使用 Flutter 2 构建 Web 应用程序的例子。全球顶尖的消费类机器人公司 iRobot,已利用 Flutter 2 将其现有的教育编程环境移植至 Web。
还有在线动画工具 Rive,其更新后的 Web 应用程序(目前提供 Beta 版)完全由 Flutter 2 构建。
Flutter 2 可应用至多种设备
除了传统的移动设备和 Web 之外,Flutter 2 的应用也支持桌面 PC、可折叠设备和嵌入式设备。以谷歌官方发布的应用为例,Flutter 2 优秀的移植性得到了充分地证实。
通过与促进开源软件项目 Canonical 的合作,谷歌成功将 Flutter 带入桌面,并且未来 Flutter 还可能成为 Canonical 创建桌面和移动应用程序的默认选择。
其次,微软也在扩大对 Flutter 的支持。除了正在合作实现 Flutter 对 Windows 的高质量支持,微软今日还宣布 Flutter 将支持其新款可折叠 Android 设备,对此 Surface 团队展示了他们如何使用 Flutter 为 Surface Duo 和其他设备提供高质量实现。
最后,世界畅销汽车制造商丰田也宣布了一项计划:将通过由 Flutter 提供支持的信息娱乐系统,将最佳的数字体验带入汽车市场。Flutter 的高性能、快速迭代、智能手机层的触摸机制等特点都是丰田选择它的原因。此外,通过使用 Flutter 的 Embedder API,丰田还能针对车载系统的独特需求量身定制 Flutter。
期待 or 担忧?
Flutter 2 一经发布就引起了众多开发者的注意,在 Hacker News 迅速登上 TOP 榜,引发诸多讨论。
有网友表示期待:
我相信 Flutter 是一个非常雄心勃勃的项目,感谢谷歌确实在试图解决跨平台 UI 开发问题。
也有网友对此无动于衷:
也许 Flutter 会成为跨平台 UI 开发的王者,但开发者社区已经被这个承诺骗了很多次了,我们必须先看到最终产品才会兴奋起来。
还有网友担忧同样用于开发桌面应用的 Electron 会受到冲击:
Flutter 2.0 发布了,一套代码同时支持移动端和桌面端(ios,Android,Windows,macOS 和 Linux)。如果真能做到,Electron 应该会受到很大冲击。
对此,你有什么看法吗?欢迎评论区留言!
参考链接:
https://developers.googleblog.com/2021/03/announcing-flutter-2.html
https://hn.algolia.com/?dateRange=last24h&page=0&prefix=false&query=&sort=byPopularity&type=story