熬夜看完了正在倫敦舉行的 Flutter Live Keynote,迎來 Flutter 1.0.0 的正式發佈。在最近一個月使用 Flutter 幫助客戶構建產品的體驗中,逐漸發現 Flutter 就是我期待已久的原生開發技術——足夠簡單,開發順暢,編寫一次,多端運行,表現一致。react
我最先接觸原生開發技術,是 RubyMotion。RubyMotion 誕生於 MacRuby。Flutter 的不少技術,讓我想起來使用 RubyMotion 的經歷,不少技術也曾經在 RubyMotion 上接觸過,好比 Hot Reload。可是,Flutter 有一個 RubyMotion 所不具有的優點:Skia(skia.org)。git
RubyMotion 也有 Flow 項目(github.com/hipbyte/flo… ),採用了相同的思路,來解決 iOS 和 Android 之間的鴻溝。無奈兩個平臺之間的原生繪圖 API 各不相同,爲了抹平兩個平臺的差別,有巨大的工做量須要作,在項目進展初期並不順利。程序員
在後面的職業生涯中,我也接觸過 Swift、Kotlin,它們都是設計足夠好的現代編程語言,可是侷限於 iOS 和 Android 兩個平臺,當你在一個平臺取得了成功,想擴展到另一個平臺的時候,每每就是災難的開始。我在 KnewOne 的前同事 Jasl(github.com/jasl )就曾爆肝一個月,把 Less 的 Android 版本實現了,但強如他的程序員,畢竟是稀缺的。github
業界爲跨平臺提出過不少方案,從最先的 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.」 。apache
Flutter 的實現方案是大膽且行之有效的,經過 Skia 提供的強大的,穩定的,統一的繪圖 API,把各類控件所有本身繪製。我用 cloc(github.com/AlDanial/cl… )統計下來,Flutter 1.0.0 已經接近兩百萬行 dart 文件。編程
而我使用下來的經驗來講,這裏絕大多數代碼都是實現各類 Material Design (material.io)和 iOS 組件。這個工做量是巨大的,而這份代碼也是一份巨大的寶庫,能夠用來研究各類控件是如何實現的。react-native
講了太多廢話,稍微總結一下此次的 Flutter Live Keynote:瀏覽器
在發佈 1.0.0 的時候,順帶介紹了其餘公司的幾個酷酷的產品。weex
第一個是 2D, Inc 的 Flare(www.2dimensions.com/about-flare ),能夠把它理解爲 Flutter 的 Hype (tumult.com/hype/ )或者 Airbnb 的 Lottie(airbnb.design/introducing… )。app
第二個是 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… )的功能。
最後,介紹了一下 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 的同窗提供一個有價值的入門指北。