Flutter 发布 1.0.0 了!

1,499 阅读3分钟

熬夜看完了正在伦敦举行的 Flutter Live Keynote,迎来 Flutter 1.0.0 的正式发布。在最近一个月使用 Flutter 帮助客户构建产品的体验中,逐渐发现 Flutter 就是我期待已久的原生开发技术——足够简单,开发顺畅,编写一次,多端运行,表现一致。

我最早接触原生开发技术,是 RubyMotion。RubyMotion 诞生于 MacRuby。Flutter 的很多技术,让我想起来使用 RubyMotion 的经历,很多技术也曾经在 RubyMotion 上接触过,比如 Hot Reload。但是,Flutter 有一个 RubyMotion 所不具备的优势:Skia(skia.org)。

RubyMotion 也有 Flow 项目(github.com/hipbyte/flo… ),采用了相同的思路,来解决 iOS 和 Android 之间的鸿沟。无奈两个平台之间的原生绘图 API 各不相同,为了抹平两个平台的差异,有巨大的工作量需要做,在项目进展初期并不顺利。

在后面的职业生涯中,我也接触过 Swift、Kotlin,它们都是设计足够好的现代编程语言,但是局限于 iOS 和 Android 两个平台,当你在一个平台取得了成功,想扩展到另外一个平台的时候,往往就是灾难的开始。我在 KnewOne 的前同事 Jasl(github.com/jasl )就曾爆肝一个月,把 Less 的 Android 版本实现了,但强如他的程序员,毕竟是稀缺的。

业界为跨平台提出过很多方案,从最早的 PhoneGap(phonegap.com/ )到 Xamarin(visualstudio.microsoft.com/xamarin/ )、React Native(facebook.github.io/react-nativ… )、Weex(weex.apache.org/cn/guide/ ) 。甚至业界也逐渐认同于诞生自 ReactNative 的 “learn once, write anywhere.” 。

Flutter 的实现方案是大胆且行之有效的,通过 Skia 提供的强大的,稳定的,统一的绘图 API,把各种控件全部自己绘制。我用 cloc(github.com/AlDanial/cl… )统计下来,Flutter 1.0.0 已经接近两百万行 dart 文件。

而我使用下来的经验来说,这里绝大多数代码都是实现各种 Material Design (material.io)和 iOS 组件。这个工作量是巨大的,而这份代码也是一份巨大的宝库,可以用来研究各种控件是如何实现的。

讲了太多废话,稍微总结一下这次的 Flutter Live Keynote:

介绍了 Flutter 的优势。

发布了使用 Flutter 开发的 The History of Everything by 2D, Inc,耗费 3 个开发者三个月的时间。

🎉 🎉 🎉 正 式 发 布 了 1.0.0 🎉 🎉 🎉

在发布 1.0.0 的时候,顺带介绍了其他公司的几个酷酷的产品。

第一个是 2D, Inc 的 Flare(www.2dimensions.com/about-flare ),可以把它理解为 Flutter 的 Hype (tumult.com/hype/ )或者 Airbnb 的 Lottie(airbnb.design/introducing… )。

第二个是 codemagic.io/,给 Flutter 准备的 CI/CD,目前免费。可以在帮客户开发系统的时候,让我省很多时间。但是我觉得市场上的其他 CI/CD 也会逐渐跟进。

同时穿插了两个 Live Coding,秀了一下 Flutter 的肌肉。整个开发流程非常顺畅,颇有写 Rails 的错觉。尤其是第二个整合 Firebase ML(firebase.google.com/products/ml… )实现类似 iOS Animoji(support.apple.com/zh-hk/HT208… )的功能。

one more thing

最后,介绍了一下 Flutter Desktop Embedding 项目转正了。我们有了 Electron(electronjs.org) 以外的另一个选择。

Flutter 正式从针对 iOS 和 Android 的开发框架向大一统 UI 开发框架的方向演进。顺便介绍了一下本场的 Keynote 也是用 Flutter 写的。而这也让我想起来了曾经有人用 RubyMotion 写过 Slides。历史总是惊人的相似。

让 Flutter 可以运行在浏览器中,不过目前只是给了 Preview,没有放出代码,等后面技术细节的博文出来之后,再写一下。现在代码库还是空的(github.com/dart-lang/h… )。

总结和废话先写到这里,从我这个月以来的体验来说,我觉得 Flutter 是接下来非常值得投入的技术之一。虽然发了 1.0.0,但是坑还是有的,踩坑避免不了,但是这不就是开发的乐趣么?

而且从 Flutter 的 GitHub Issues(github.com/flutter/flu… ),可以看出官方团队维护非常积极。

小小的预告一下,我会接下来整理一份我在踩坑过程中参考的资料列表,为想入门 Flutter 的同学提供一个有价值的入门指北。