最近 Flutter 发布了官方关于 2022 的 战略 和 路线图 ,本篇主要针对内容做一些总结和解读,给正在使用 Flutter 或者正打算使用 Fluter 的人做个参考。
总结陈述相关目前 Flutter 社区的发展已经很大,官方统计在过去的一年里,数据上 Flutter 已经基本超过超过其他跨平台框架,成为最受欢迎的移动端跨平台开发工具,截至 2022 年 2 月,有近 50 万个应用程序使用 Flutter。
在过去一年里, Flutter 社区有数千人为该项目提供了贡献和支持,从个人到 Canonical、Microsoft、ByteDance 和阿里巴巴等大公司都对 Flutter 提供了不少帮助。
当然 Flutter 也不是尽善尽美,Flutter 虽然也有被一些大型应用所使用,例如:SHEIN (顶级时尚零售商)、微信(10 亿+用户 IM 应用程序)和PUBG (7.5 亿+玩家大逃杀游戏),但是它在大型应用中使用并不明显。
因为在大型应用中有大量的历史需求和代码,还有重构所需的成本限制,使用 Flutter 进行混合开发其实支持不如 Jetpack Compose ,是的, Flutter 官方表示:
相反,Android 的 Jetpack Compose 产品非常适合这一类产品,因为它可以轻松地基于 JVM 的框架,逐步添加到现有的 Android 应用程序中。
也就是从官方的角度看,混合开发下,特别是 Android 平台,其实 Compose 更适合混合开发,感觉这也是 add-to-app 的维护和推进到现在好像并不乐观的原因。
展望Flutter 在 2022 年首要的战略目标就是月活跃用户的增长,官方的理念就是:
1、提升开发体验一个 SDK 再优秀,如果只有少部分人在使用,那它也不能体现价值;但是一个 SDK 即使平庸,但是有大量开发者使用,那也会拥有一个健康繁荣的生态氛围,这样使用框架的人才能从中受益。
目前谷歌认为虽然 Dart 和 Flutter 相对原生平台会给开发者带来学习成本,但是也会带来了不错的收益,另外得益于社区良好的发展和维护,目前 Flutter 和 Dart 丰富的开发工具和文档,可以让开发人员顺利地迁移到 Flutter,所以 Dart 和 Flutter 未来的开发体验会越来越好。
而官方未来也将持续优化 Flutter 的一些开发体验,例如: DevTools 中有助于调试性能问题的新功能。
但是事实上在新版 Android Stuio Bumblebee 和 Flutter 插件 的体验目前并不好,一些 Plugin 上功能的消失或者无法正常使用的问题其实比较让人难受,例如:出现 iOS 运行提示 Cocospod 不存在,但是其实已经安装的问题。
虽然这种问题通过其他方式解决并不麻烦,比如命令行运行,但是显得就很低级。目前 Android Stuio Bumblebee Patch1 已经解决了该问题,但是这次更新无法增量,只能全量覆盖。另外
还有关于 Flutter 插件上关于 module 的自动导入消失的等等 ···
2、跨平台可以看到 Flutter 已经投入很多精力和时间在改进 Flutter 的开发体验,作为目前最大体量的跨平台开发框架,时不时有些瑕疵还是可以理解,希望 2022 Flutter 能更加注重细节的问题。
关于跨平台上体验上,在 iOS 和 Android 上 Flutter 目前已经可以说得做到了不错的体验和质量,而随着 Window 第一个稳定版本已经发布了,今年的大目标之一就是继续提高 Web 和 Desktop 相关的开发体验和交付质量。
另外 Android 开发人员正在对 Material 的进行支持,同时对新硬件功能和外形尺寸等进行适配,以及与 Jetpack 库和 Kotlin 代码的更好集成也都是计划之一。
最后 Flutter 在 Web 上目前已经使用了 CanvasKit、WebGPU、AOM 和带有 GC 的 WebAssembly 等新技术,在新的一年也会继续维护和提高 Web 的交付质量,例如: 在 Web 上的 hotload 以及改进 Dart-to-JS 的使用场景。
2022 年路线图
正如前面解读的,Desktop 的投入是最主要的目标之一,从 Windows开始,然后是 Linux 和 macOS ,将尽快推进 Desktop 平台全部 Stable。
关于 Web 方面,在高兼容和提高性能的同时,也打算尝试让 Flutter Web 可以嵌入到其他非 Flutter 的 HTML 页面里。
Flutter 的 framewok 和 engine 方面, Material 3 和支持从单个 Isolate 渲染到多个窗口会是很重要的一部分内容,另外还有一个大头就是改进各个平台上本编辑的体验。其实个人认为,Flutter 在文本编辑和键盘方便的体验确实还不够好。
Dart 语言方法主要是 2022 可能会引入静态元编程,另外语法改进,计划扩展 Dart 的编译工具链以支持编译到 Wasm 也在计划当中。
关于 Jank 问题,Flutter 已经开始考虑重构着色器了,其中 2022 年 iOS 将会迁移到新的着色器框架上,并在后续再移植到其他平台,但是从 #85737 上看,任重道远,希望不会有什么大坑吧~
最后总的来看, Flutter 团队的今年的投入和计划还是占比不低,Flutter 社区的活跃也加速着 Flutter 的成熟。
但是同样随着 Flutter 项目越来越庞大,例如 #95343 这样的问题可能也会越来越多,因为使用的人多了,需要面对的需求就多了,细节的把控上就更具备挑战性。
同样就如官方所说,虽然 Flutter 团队有在推进混合开发的支持,但是 Flutter 从根源实现上,对于混合开发其实就很不友好,例如:渲染同步、路由同步、混合内存优化、混合数据共享等等,不是说不支持,而是成本和收获的问题,所以可以看到最近这些稳定版本,Flutter 关于 add-to-app 的提及相对较少,目前看来 Flutter 官方主要还是计算在维护好 Andorid 和 iOS 平台的基础上,继续优化 Web 的质量和推进 Desktop 全平台正式发布更主流。