Flutter_1 序

Why flutter

flutter 是时下最流行的构建跨平台桌面程序(Linux macOS Windows Android iOS Web)的技术之一,在此之前,我们也有其他的解决方案,比如微软的 Xamarin(过于冷门),谷歌主导的开源项目 electron,Facebook主导的开源项目 React Native,还有国内常用的 cef(腾讯视频,有道词典),Qt(WPS),Sciter,uniapp 等等,除 Qt 和 Xamarin 外,大部分常见的 UI 框架都依托于 Web 技术栈,这样做有利有弊,对于企业来说招人是变得简单了,并且产品迭代周期和业务上线速度很快,但对于用户而言,这些应用的性能实在是堪忧,体积庞大,占用资源过多等非常影响使用体验,我们需要一个性能优秀并且符合现代互联网业务扩张速度的 UI 框架,flutter 渐渐崭露头角。

flutter 其实是伴随谷歌的新系统 Fuchsia 发展而出现的,一开始发布时(2015)其实并未受到太多关注,因为人们已经见过太多的 UI 框架因为各种各样的问题而变得冷门,甚至是不再维护。2018 年才是 flutter 腾飞的一年,因为随着谷歌对 flutter 项目和团队的大力投入,整个框架似乎离 production 阶段不远了,这一年,社区的发展如火如荼,铺天盖地的 plugin 如潮水般涌来,在这样的节奏下,flutter 在今年发布了第二个版本,宣告着对 Web 的支持进入 production 阶段(我玩了一下,感觉还是很拉)。

flutter的不足

底层背靠 C++ 引擎 skia,使得 flutter 的渲染性能超过 RN,比肩原生。然而还是伴随着一些问题,比如 StatelessWidget 和 StatefulWidget 的设计其实存在着抽象泄露,更大的问题是,我们仍然逃不过平台差异性与需求统一性之间的矛盾,flutter 团队不可能把所有的需求都做到跨平台,在遇到特定问题时,需要写平台独立的插件。当一个产品做的越深入,和平台之间的耦合性会也越强,这时 flutter 所谓的跨平台优势就没那么明显了。

总结

学习 flutter 是有益的,尽管存在着大大小小的问题,但其中许多的思想和设计理念都是最佳实践得来的。然而,flutter 不能解决所有的问题,否则对于原生开发者来说未免也太不公平了一点。最后需要指出的是,flutter 是极其容易学习的,因为 dart 是一个经典的 OOP 语言。这个系列不会特别关注细节,我们只攫取有意思的部分讲一讲。

版本控制

Version Action Time
1.0 Init 2021-04-01
2.0 Fix typo 2021-04-02
3.0 Add banner 2021-04-05