本文首發在公衆號Flutter那些事 歡迎關注。ios
前言 Flutter1.0穩定版昨晚的終於發佈了。咱們爲此感到高興。對於開發者來講,有了穩定版至關於一個定心丸。本文主要介紹Fllutter1.0的一些功能和相關工具。程序員
北京時間今天凌晨1點45分,在Flutter Live,谷歌Flutter團隊宣佈推出Flutter 1.0,這是谷歌UI工具包的第一個穩定版本,用於從單個代碼庫爲iOS和Android建立美妙的原生體驗。api
今天的跨平臺移動開發充滿了妥協。開發人員不得不在爲多個操做系統屢次構建相同的應用程序之間作出選擇,或者接受最低的公分母解決方案,以便在本機速度和準確性方面實現可移植性。經過Flutter,咱們相信咱們擁有一個解決方案,能夠爲您提供一箭雙鵰的優點:硬件加速圖形和UI,由本機ARM代碼驅動,針對流行的移動操做系統。架構
Flutter不會取代傳統的Apple和Android應用程序模型來構建移動應用程序; 相反,它是一個應用引擎,您能夠嵌入到現有的應用程序或用於一個全新的應用程序。框架
咱們從四個維度考慮Flutter的特徵:編輯器
一、Flutter可使你構建漂亮的應用程序ide
谷歌但願設計師可以提供他們的所有創意願景,而不會由於底層框架的限制而被迫下降成本。Flutter可以讓您控制屏幕上的每一個像素,其強大的合成功能可以讓您無限制地疊加和動畫圖形,視頻,文本和控件。Flutter包含一整套小部件,可在iOS和Android上提供完美的像素體驗。它能夠最終實現Material Design,這是Google的數字體驗開放式設計系統。工具
二、Flutter很快。性能
它由支持Chrome和Android的硬件加速的Skia 2D圖形引擎提供支持。谷歌設計了Flutter,可以以您設備的原生速度支持無毛刺,無抖動的圖形。Flutter代碼由世界級的Dart平臺提供支持,該平臺能夠爲iOS和Android編譯爲本機32位和64位ARM代碼。測試
三、Flutter頗有效率
Flutter引入了stateful hot reload(狀態熱重載),這是一種革命性的新功能,可供移動開發人員和設計人員實時迭代他們的應用程序。經過有狀態熱從新加載,您能夠更改應用程序的代碼並當即查看結果,而無需從新啓動應用程序或丟失其狀態。有狀態的熱從新加載改變了開發人員構建應用程序的方式 - 在用戶調查中,開發人員說它使開發週期的效率提升了三倍。
四、Flutter是開源的。
Flutter是一個開源項目,擁有BSD風格的許可證,包括來自世界各地的數百名開發人員的貢獻。此外,還有一個充滿活力的數千個插件生態系統。由於每一個Flutter應用程序都是使用標準Android和iOS構建工具的本機應用程序,因此您能夠從底層操做系統訪問全部內容,包括Android上用Kotlin或Java編寫代碼和UI,以及iOS上的Swift或Objective-C。
將它們放在一塊兒,將它與Visual Studio Code,Android Studio,IntelliJ IDEA 或您選擇的程序員編輯器的一流工具相結合,您就擁有了Flutter —— 一個從單獨代碼庫爲Android或ios構建良好本地體驗的開發環境。
谷歌在十個月前宣佈了Flutter在移動世界大會上的第一個測試版,咱們很高興看到它被更普遍的社區採用的速度有多快,正如已經發布到Apple和Apple的數千個Flutter應用程序所證實的那樣。甚至在1.0發佈以前,Google Play就存儲了。很明顯,開發人員已準備好採用新的UI開發方法。
在Flutter團隊內部,Flutter正在Google上用於各類各樣的產品,谷歌廣告已經爲他們的iOS和Android應用程序切換到Flutter。甚至在1.0以前,包括Abbey Road Studios,阿里巴巴,Capital One,Groupon,Hamilton,京東,飛利浦Hue,Reflectly和騰訊 在內的普遍全球客戶正在使用Flutter開發或發佈應用程序。
來自Capital One團隊的高級工程總監邁克爾·瓊斯(Michael Jones)說,他們對Flutter的經歷以下:
「咱們對Flutter對高性能跨平臺開發的獨特看法感到興奮。咱們的工程師對快速開發承諾和熱重載功能表示讚揚,在過去的一年中,咱們看到了框架,特別是本機集成的巨大進步。
「Flutter可讓Capital One想象不是'iOS或Android-first'時尚的功能,而是真正的移動優先模式。咱們很高興看到Flutter 1.0並繼續對進步的速度和工程界的興奮。「
在今天凌晨的Flutter Live活動中,受歡迎的支付服務廣場宣佈推出兩款新的Flutter SDK,能夠輕鬆接受Flutter的商品和服務付款,不管是使用Square支付閱讀器仍是在移動應用程序內付款。Square展現了使用來自Collins Family Orchards的應用程序支付SDK的示例,這是一個在太平洋西北地區農貿市場種植和銷售水果的家庭農場。
Collins Family Orchards應用程序的開發人員Dean Papastrat對此有所瞭解:
「我被生產構建中的全部動畫和轉換的速度所迷惑。做爲一名Web開發人員,過渡到Flutter很是容易,我沒法相信我可以構建一個徹底正常運行的應用程序能夠在一週內付款。「
一樣在Flutter Live,2Dimensions宣佈即將推出Flare,這是一款非凡的新工具,可供設計師建立矢量動畫,可直接嵌入到Flutter應用程序中並使用代碼進行操做。Flare消除了在一個應用程序中設計,在另外一個應用程序中設置動畫,而後將全部這些轉換爲特定於設備的資產和代碼的須要。
使用Flare構建的動畫能夠做爲窗口小部件嵌入到現有的Flutter應用程序中,容許它們參與完整的合成器並與其餘文本,圖形圖層甚至UI小部件重疊。以這種方式集成能夠將動畫從其餘體系結構的「黑盒子」限制中解放出來,並容許設計人員和開發人員之間的持續協做直到應用程序完成。Flutter和Flare之間的這種緊密集成爲想要創造高度完美的移動體驗的數字設計師和動畫師提供了獨特的引人注目的產品。
另外一個打賭Flutter的合做夥伴是Nevercode,這是一家快速增加的移動應用程序持續集成和交付(CI / CD)工具提供商。在Flutter Live,他們發佈了Codemagic,這是專爲Flutter設計的新工具,能夠經過單一自動化輕鬆實現爲Android和iOS構建和打包Flutter應用程序的過程。Codemagic現已推出測試版,可以讓您選擇包含Flutter項目的GitHub倉庫,只需點擊幾下,便可建立運行測試的持續構建流程,並生成可上傳到Apple和Google Play商店的二進制應用程序包。
咱們整理了一個簡短的視頻,以突出開發人員自測試版以來使用Flutter構建的應用程序的範圍和種類:
自第一個測試版以來,咱們一直致力於爲Flutter添加功能和潤色。特別是,咱們經過新的小部件完善了對像素完美iOS應用程序的支持; 增長了對近二十種不一樣Firebase服務的支持; 並致力於提升性能並減小Flutter應用程序的大小。咱們還根據社區的反饋結束了數千個問題。
Flutter還包括最新版本的Dart平臺,Dart 2.1,提供更小的代碼大小,更快的類型檢查,以及更好的類型錯誤可用性。Dart 2.1還具備新的語言功能,可在構建用戶體驗時提升工做效率。已經採用Dart 2.1的開發人員告訴咱們,只需切換到最新的引擎,他們就能看到顯着的速度提高:
雖然1.0版本的主要焦點是錯誤修復和穩定,但咱們還推出了兩個主要新功能的預覽,供開發人員在預覽模式下試用,咱們預計將在2019年2月的下一季度版本中發佈:添加到應用程序和平臺視圖。
當咱們第一次構建Flutter時,咱們專一於有人從頭開始構建新應用程序的生產力。可是,固然,並非每一個人都有可以以乾淨的名義開始的奢侈品。與咱們的一些大客戶交談時,很明顯他們但願將Flutter用於現有應用程序中的新用戶旅程或功能,或者將現有應用程序分階段轉換爲Flutter。
Flutter的架構很好地支持這個模型:畢竟,每一個Flutter應用程序都包含一個主機Android和iOS容器。可是咱們一直在努力經過更新現有應用程序的模板,工具和指南來更容易地逐步採用Flutter。咱們更容易在Flutter和主機代碼之間共享資產。咱們還從新設計了工具,以便在不使用應用程序啓動調試器的狀況下輕鬆鏈接到現有的Flutter流程。
咱們將繼續努力使這一體驗更加美好。儘管許多客戶已經成功使用咱們關於添加到應用程序的指南,但咱們仍在繼續添加示例並擴展對複雜方案的支持。與此同時,咱們將Flutter添加到現有應用程序的說明在咱們的維基上,您能夠跟蹤GitHub項目板上的剩餘工做。
雖然添加到應用程序是一種將Flutter逐漸引入現有應用程序的有用方法,但有時反過來並將一個Android或iPhone平臺控件嵌入到Flutter應用程序中會頗有用。
所以,咱們引入了平臺視圖小部件(AndroidView
和UiKitView
),讓您能夠在每一個平臺上嵌入此類內容。咱們幾個月來一直在預覽Android支持,但如今咱們正在擴展對iOS的支持,並開始添加利用此功能的 Google Maps 和 **WebView **等插件。
與其餘組件同樣,咱們的平臺視圖小部件參與組合模型,這意味着您能夠將其與其餘Flutter內容集成。例如,在上面的屏幕截圖中,右下角的浮動操做按鈕是Flutter小部件,其背景顏色爲50%alpha。這充分展現了Flutter的獨特建築優點。
雖然這項工做已經爲開發人員準備好了,但咱們仍在繼續努力提升性能和設備兼容性,所以咱們建議您在部署依賴於PlatformView的應用時要謹慎。咱們將繼續積極優化平臺視圖,並指望它們可以及時爲咱們的下一季度更新作好準備。
到目前爲止,Flutter的主要目標是iOS和Android。然而,咱們對Flutter的抱負不只僅是從移動設備擴展到更普遍的平臺。實際上,Flutter從一開始就被設計爲便攜式UI工具包,其靈活性足以在像素被繪製的任何地方進行。
其中一些工做已在公開場合進行。Flutter Desktop Embedding是一個早期階段的項目,它將Flutter引入桌面操做系統,包括Windows,MacOS和Linux。咱們最近還發布了在Raspberry Pi上使用Flutter的非正式細節,做爲向可能不包含完整桌面環境的小規模設備演示Flutter嵌入支持的一種方式。
本週,在Flutter Live,咱們第一次看到了咱們正在實驗室中進行的實驗項目,該項目顯着擴展了Flutter能夠運行的地方。
Hummingbird是Flutter運行時的基於Web的實現,它利用Dart平臺的功能不只能夠編譯本機ARM代碼,還能夠編譯JavaScript。這使得Flutter代碼能夠在基於標準的Web上運行而無需更改。
固然,移動端仍然是咱們的當務之急,您能夠期待在將來幾個月內看到谷歌對這些核心移動方案的大部分研發成果。