Flutter 的 2021 年终总结

24,160 阅读9分钟

「时光不负,创作不停,本文正在参加2021年终总结征文大赛

  • 本文为 Marno 原创,并首发于掘金平台,转载必须保留原文链接
  • 支持原创,欢迎关注微信公众号【 aMarno 】

拉一下票

掘金人气作者评选开始了,如果你喜欢这篇文章,不妨给我投上一票,谢谢大家。

投票入口 >>

一、新年寄语

又到年底了,不知道你们有没有觉得,自从过了某个年龄以后,时间好像就开始过的越来越快了。

不知不觉,新冠疫情发生已经有 2 年多了,从疫情最开始的人心惶惶,再到我们国人万众一心抗疫,这场苦难好像无形中也增加了民族的凝聚力。

如果可以许下一个愿望,希望在新的 2022,我们可以早日战胜新冠.

二、引言

全职使用 Flutter 开发也有 2 年多的时间了,从 Flutter 发布之初,我就一直在关注,但那时主要在用 React Native,就觉得同样是跨平台技术,没有必要在为了解决同一个问题上,再多学一个效果差不多的工具。 因为当时主要还是观望的心态,再加上在 RN 上已经有一些技术积累,所以对学习 Flutter 的兴趣不是很大。

但是 2019 年,因为一个项目的契机,我第一次在线上的项目里用 Flutter 开发,那个时候 Flutter 1.0 已经正式发布,也就是从那个项目以后,我后面的项目就开始陆续切换到 Flutter 了。

先容我说一句,Flutter YYDS!

虽然它现在也有很多不足,比如 debug 模式在 vivo 某些机型会白屏,比如 release 模式下冷启动会有一定概率白屏(黑屏)等等,但是光是稳定的 HotReload 就足以让人觉得它瑕不掩瑜。

熟悉我的朋友都应该好多都知道,我之前在 2017,2018 年写过

回顾一下过去这一年的 Flutter 发展,无论是对自己以后的学习,还是对想要学习 Flutter 的朋友,应该都会有一些帮助。

三、版本历史

版本发布频率是一个框架活跃度的重要体现之一,所以我们先来回顾一下,2021 年,Flutter 的版本发布历史情况:

渠道发布数量

2021 这一年,
Flutter 共更新 74 个版本
平均 6.17 个/月,1.54 个/周
稳定版 18 个,平均 1.5 个/月,频率蛮高
较重要的有 4 个,分别是:2.02.22.52.8
21 年的第一个版本是 1.25.0-8.2.pre
截止发文,最后一个版本是 2.9.0-0.1.pre
2 月份发布次数最多,共 11 个版本。
11 月发布最少,为 2 个版本。

每月版本统计

从年初的 1.22.6 到年底的 2.8.0,不得不说 Flutter 的版本推进的很快。照这个推进的速度,明年应该至少能上到 4.0 版本。

四、重大更新

虽然今年版本发布了 70 多个,稳定版也有 10 多个,但实际上比较重要的版本也就 4 个,其他版本基本都是在修修补补,所以我们就主要来看下比较重要的这几个版本。

2.0.0

  1. Flutter for Web 稳定版发布,已高度可用
  2. 引入 Null Safety 空安全
  3. 加入多个 Cupertino 风格组件
  4. 更多设备的支持:桌面,平板,折叠设备等
  5. 新增 Widget: AutocompleteScaffoldMessenger
  6. 与原生混合开发支持添加多个 Flutter 页面,并显著降低内存占用。参考:《 多个 Flutter 页面或视图 》
  7. Flutter fix 命令的引入,可以快速帮助修复问题
  8. 更强大的 Flutter DevTools 工具
  9. DartPad 升级到支持 Flutter 2

更多内容参考 >>

2.2.0

  1. Dart 2.13 版本支持
  2. Flutter Web 加强了调试和无障碍支持
  3. 提高 iOS 页面转场动画,缩短 iOS 应用安装时间
  4. 更完善的自适应应用的支持,参考: 《 构建自适应的应用 》
  5. 更多 Material 图标,总数突破 7000
  6. 优化桌面端在文本输入时的体验,提供更符合桌面端的操作逻辑
  7. 优化滚动条在桌面端的表现
  8. TextSpan 支持 mouseCursor,还支持 onEnter 和 onExit
  9. 预览版:Android 支持延迟加载组件,可显著减小安装包。更多>> 《 延迟加载组件 》

更多内容参考 >>

2.5.0

  1. Dart 2.14 版本支持
  2. 改进着色器,内存回收,优化 iOS 性能表现
  3. 降低 Dart 与原生之间通信的延迟,最高达 50%
  4. 支持 M1 芯片构建的应用直接在 ARM 架构的 iOS 模拟器上运行
  5. flutter create 命令创建项目会自动加入 flutter lints 支持
  6. 解决 Android 全屏模式的一些问题,就是沉浸效果那些
  7. 加入 Material You 设计规范的支持
  8. 优化滚动事件的触发通知,桌面端调整窗口大小时,即使不滚动,也可以收到通知
  9. ScaffoldMessenger 增加了 Material 横幅的支持
  10. 增加一个新的创建项目模板:flutter create -t skeleton my_app
  11. 帮助 pub 插件开发者提高效率的工具:【 查看>> Pigeon 1.0 】
  12. 推荐使用 fluttercommunity.dev 社区维护的 plus 组件代替官方组件,【 访问社区>> 】

更多内容参考 >>

2.8.0

  1. 优化了启动性能,尤其在低端设备上的表现
  2. 优化 Android 设备上的内存占用
  3. Flutter Devtools 加入一些新功能
  4. PlatformView for Web,显著提升 Web 性能
  5. webview_flutter 3.0 发布了大量更新
  6. 更好,更方便的使用 Firebase
  7. Flutter for Desktop 加了对国际化过本地化的支持
  8. 移除 flutter sdkdev channel,因为用的人太少 更多内容参考 >>

PS:从 2.8.0 以后,官方正式弃用了 dev channel ,如果你还在用 dev 包,可以切换到早点切换到其他渠道了。免得后面版本跨度太大,切换起来问题多。

五、多版本管理 - fvm

随着 Flutter 的不断更新,不同项目之间的 SDK 版本难免会出现差异,这个时候我们就需要用到一个版本管理工具 fvm,来帮助我们来管理 Flutter SDK 的版本。

具体的使用,和其他的如 nvm, gvm 等都类似,只需要安装 fvm,然后将项目的 flutter sdk 地址指向 fvm 下的 Flutter 即可。

如果你也面临着跨多个版本维护项目的问题,不妨试试 fvm,因为篇幅有限,我就不赘述了,感兴趣的朋友可以参考一下这几篇文章:

  1. fvm 官方文档
  2. 《 使用fvm,助力你吃上Flutter2 》- season_zhu
  3. 《 FVM - Mac上管理 Flutter 多版本的神器 》- CoderC
  4. 更多 >>

六、Flutter桌面端

前段时间,我抱着尝试的心态,用 Flutter 开发了一个桌面 App,本来就是尝试的心态,没想到 Flutter 真的可以完成我的想法。过程就不展开说了,感兴趣的话具体可以去看下这篇文章。

《 Flutter 很强,仅 2 天就写了个桌面端 App 》

并且整个开发的过程算是比较顺利,甚至比我去年用 swift 开发原生 macOS 的过程还要顺利,因为开源社区有很多很完善的文档。不像是 macOS 原生开发,我去年找遍网上也没有一个比较完整的中文开发文档,遇到很多问题只能去官网啃英文原文,而很多组件的官网说明也写的非常不友好,浪费了大量的时间。过程我也贴一下:

写了个 macOS App :《护眼提醒(EyeSaver)》

而且我最近发现,社区里面,使用 Flutter 开发桌面应用的人好像也越来越多了,甚至也涌现出很多非常优秀的项目来:

  1. FlutterFolio - Flutter 跨平台能力展示
  2. AppFlowy - 可以代替 Notion 的开源笔记
  3. AuthPass - 全平台开源密码管理工具
  4. Biyi比译 - 优秀的翻译软件,By 痕迹
  5. FluentUI - windows 设计风格的开源组件
  6. macOSUI - macOS 设计风格的开源组件
  7. Harmonoid - 漂亮的本地音乐播放器
  8. Leaflet - 美观快速的笔记应用
  9. odin - 文件分享 App
  10. lumi - Philips 智能家居控制中心
  11. appimagepool - 简单的AppImageHub客户端

有太多了,就不一一列举了,感兴趣的可以去这里看: awesome-flutter-desktop

我们可以看到上面这些 App 都用 Flutter 实现了较为复杂的业务功能,再一次觉得 Flutter 才是跨平台开发的未来,这种轻而易举就可以将业务扩展到其他平台的能力,真的太有想象空间了。

很多类型的应用,诸如图片压缩,资源管理,媒体播放,写作创作等等,Flutter 几乎都可以胜任。如果你正在考虑开发一个桌面应用,不妨来试一试 Flutter 吧!而且用 Flutter 开发桌面端,几乎没有额外的学习成本。

七、总结

通过 Flutter 这一年的更新,我们可以看到 Flutter 的社区正在日益壮大,也有越来越多的大厂加入到开源社区的贡献中来。而 Flutter Team 也在努力将 Flutter 的稳定好用扩展到所有平台上来,让 Flutter 可以真正的实现跨全平台开发。

如果 2019 年不觉得 Flutter 不过如此,那么 2021 年的下一个项目,你真的可以试一试 Flutter 了。希望可以有越来越多的人加入到 Flutter 社区中来,贡献一份自己的力量。

最后,新年的第一个项目,就让我们从 Flutter 开始吧!


参考文档:


如果你喜欢这篇文章,不妨给我投上一票,谢谢大家。

投票入口 >>

关注引导_v7.png