簡介
Flutter(項目地址)是由Google推出的跨平臺移動應(yīng)用UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。開發(fā)語言使用Dart,基于現(xiàn)代響應(yīng)式框架以組件(Widget)的方式創(chuàng)建UI。基于BSD風(fēng)格的協(xié)議發(fā)布,是完全免費、開源的。它也是構(gòu)建未來的Google Fuchsia應(yīng)用的關(guān)鍵方式 。
特性
Flutter并沒有替代傳統(tǒng)的移動應(yīng)用開發(fā)模式;相反,您可以使用它來嵌入到現(xiàn)有的應(yīng)用中或者從頭開始構(gòu)建一個完整的應(yīng)用。它的特點主要體現(xiàn)在以下四個方面:
1. 絢麗視圖 — 基于對屏幕元素每一像素的掌控,與強大的混合能力(Compositing capabilities)您可以沒有任何限制的覆蓋并使圖形、視頻、文字與控制器動起來。它包含了在iOS與Android上具有像素級別體驗的組件集合,并內(nèi)建啟用了質(zhì)感設(shè)計(Material Design)與Cupertino(iOS-flaver)組件。設(shè)計師們可以完整實現(xiàn)他們的構(gòu)想,而不用因為底層框架的限制而縮水。
2. 高效運行 — 基于與Chrome與Android相同的硬件加速的Skia 2D圖像引擎。我們將Flutter架構(gòu)成支持在設(shè)備上具有圖像處理的原生運行速度。代碼是世界級的Dart平臺語言賦能的,能夠編譯輸出運行在iOS與Android上32-bit或者64-bit的ARM代碼。
3. 快速開發(fā) — 基于狀態(tài)的熱加載技術(shù)(Stateful hot reload)允許開發(fā)者與設(shè)計師能夠?qū)崟r預(yù)覽應(yīng)用。當代碼發(fā)生變更的時候不用重啟應(yīng)用或者丟失應(yīng)用狀態(tài)就可以查看變化。這改變了原有的開發(fā)方式,使得在開發(fā)周期(Development cycle)中擁有更高的效率。
4. 擁抱開源 —?基于BSD風(fēng)格的協(xié)議發(fā)布。來自世界各地的成百上千的開發(fā)都在為項目貢獻力量,更重要的是有一個包含上千插件(Plug-ins)的活躍生態(tài)系統(tǒng)。因為使用標準的iOS和Android構(gòu)建工具,可以輕松的接入底層系統(tǒng)原有的一切內(nèi)容,包括原本在iOS下使用Swift或者Objective-C亦或在Android下使用Kotlin或者Java開發(fā)的框架與視圖組件。
將這些與最好的集成開發(fā)環(huán)境Visual Studio Code, Android Studio, IntelliJ或者其它您選擇的工具相結(jié)合,就能開發(fā)出基于一份代碼運行在iOS和Android上的酷炫應(yīng)用。
成長勢頭
Flutter在Google已經(jīng)被廣泛應(yīng)用,《Google Ads》這款應(yīng)用就已經(jīng)在iOS與Android平臺上切換到Flutter。在1.0版本之前,全球的開發(fā)廠商包括Abbey Road Studios, Alibaba, Capital One, Groupon, Hamilton, JD.com, Philips Hue, Reflectly和Tencent就已經(jīng)在開發(fā)或發(fā)布它們基于Flutter的應(yīng)用。
在Flutter Live上,Square發(fā)布了兩款基于Flutter的支付SDK用于購買商品和服務(wù)。Square同時展示了一款使用它們支付SDK由Collins Family Orchards發(fā)布的示例應(yīng)用。
同樣在Flutter Live上,2Dimensions發(fā)布了立即可使用的Flare,一款允許設(shè)計師創(chuàng)建矢量動畫的新工具,這些動畫可以直接嵌入Flutter應(yīng)用中或者使用代碼操作。
另一家押注在Flutter上的合作廠商是Nevercode,一家快速成長的針對移動應(yīng)用開發(fā)提供持續(xù)集成與交付(CI/CD)工具的供應(yīng)商。在Flutter Live上,它們發(fā)布了專門針對Flutter的Codemagic工具,簡化了自動化過程,通過一份自動化配置就可以構(gòu)建并打包可以運現(xiàn)在iOS與Android上的應(yīng)用。使用現(xiàn)階段的beta版本,您可以選擇一個Flutter項目的GitHub倉庫,只需要少量的點擊,創(chuàng)建持續(xù)構(gòu)建流程包括運行測試,生成可以上傳到Apple與Google Play應(yīng)用市場的二進制包。
新特性-1.0版本
通過新的組件我們對pixel-perfect iOS應(yīng)用的支持更加豐滿;對接近20項重點服務(wù)的支持;提升性能并減小應(yīng)用的體積。修復(fù)社區(qū)反饋的數(shù)千問題。
升級Dart到最新的2.1版本,通過該次升級可以獲取更小的代碼體積,更快的類型檢查,類型錯誤更好的可用性。Dart 2.1同樣包含新的語言特性可以提高構(gòu)建用戶體驗的生產(chǎn)力。升級到Dart 2.1的開發(fā)者都說他們遷移到新的引擎后獲取到了顯著的速度提升。
1.0版本主要關(guān)注點在于Bug修復(fù)與穩(wěn)定性。同時引入了兩項新的處于預(yù)覽模式的特性:應(yīng)用集成(Add to APP)和訪問系統(tǒng)(PlatformViews)。
應(yīng)用集成
當開始構(gòu)建Flutter的時候,我們的注意力主要集中在從頭開始構(gòu)建一個新的應(yīng)用這一場景的產(chǎn)出能力。當然并不是所有人都可以享受從一個干凈的狀態(tài)開始。與一些成規(guī)模的合作廠商交流之后,很清楚的可以了解到它們希望在現(xiàn)有應(yīng)用中使用Fluuter來獲取新的用戶旅程或特性,或者分階段的將現(xiàn)有應(yīng)用遷移到Flutter。
Flutter的架構(gòu)很好的支持了這種模式:畢竟,每一個Flutter應(yīng)用都包含在一個iOS或者Android的宿主容器中。但是我們?nèi)匀辉诔掷m(xù)更新我們的模版(Templates),工具集(Tooling)和指南文檔(Guidance)以期使得在現(xiàn)有應(yīng)用中適配Flutter更加容易。我們將在Flutter與宿主代碼之間共享資源變得更加容易。我們同樣重做了工具集,它將使不用啟動應(yīng)用的調(diào)試器就附著到既有的Flutter運行進程變得容易。
我們將繼續(xù)使開發(fā)體驗變得更加流暢。盡管一部分合作廠商已經(jīng)根據(jù)指導(dǎo)在應(yīng)用中成功的集成了Flutter,我們將繼續(xù)添加示例并對可能的復(fù)雜應(yīng)用場景提供支持。我們的指南文檔adding Flutter to existing apps are on our wiki了解一下,你也可以在GitHub project board跟蹤我們剩余的工作。
訪問系統(tǒng)
與將Flutter嵌入到現(xiàn)有應(yīng)用中相比,有些情況下,相反的將iOS或者Android系統(tǒng)能力嵌入Flutter應(yīng)用中會更加有用。
所以我們引入了?platform view widgets (AndroidView?and?UiKitView) ,允許您在各平臺上集成這樣的內(nèi)容。我們已經(jīng)觀察對Android支持的情況數(shù)個月,但是現(xiàn)在我們也在給iOS提供支持,并且開始添加Google Maps與WebView?這樣的插件(Plug-ins)。
在開發(fā)者已經(jīng)在嘗試這些功能的時候,我們?nèi)栽诔掷m(xù)提升性能與硬件設(shè)備通用性,因此基于PlatformViews發(fā)布應(yīng)用的需要注意了。我們持續(xù)積極優(yōu)化PlatformViews以期能夠在下一個發(fā)布季準時發(fā)布產(chǎn)品化使用。
更多平臺
有一些這類的工作已經(jīng)在開放狀態(tài)下展開。Flutter Desktop Embedding就是這樣一個處于早期階段的項目,它將Flutter遷移到包括Windows, MacOS和Linux在內(nèi)的桌面操作系統(tǒng)。我們最近發(fā)布了informal details of using Flutter on Raspberry Pi一種在不具備完整桌面環(huán)境的小尺寸(Smaller-scale)設(shè)備上使用Flutter的方式。

Hummingbird基于Web的Flutter運行時實現(xiàn),獲益于Dart平臺不僅能編譯生成原生ARM代碼也能生成JavaScript。這允許Flutter代碼能夠在標準的Web環(huán)境中運行而不用做改變。單獨的博客文章technical implementation details of Hummingbird描述了更多的技術(shù)細節(jié)。在Google I/O 2019上我們將進行更多分享。
總結(jié)
您可以從我們的官網(wǎng)https://flutter.io/下載Flutter 1.0,這里你可以發(fā)現(xiàn)documentation for developers transitioning from other frameworks, code labs,?cookbook of common samples和technical videos。
