本文首發在公眾號Flutter那些事 歡迎關注。
前言 Flutter1.0穩定版昨晚的終於釋出了。我們為此感到高興。對於開發者來說,有了穩定版相當於一個定心丸。本文主要介紹Fllutter1.0的一些功能和相關工具。
北京時間今天凌晨1點45分,在Flutter Live,谷歌Flutter團隊宣佈推出Flutter 1.0,這是谷歌UI工具包的第一個穩定版本,用於從單個程式碼庫為iOS和Android建立美妙的原生體驗。
今天的跨平臺移動開發充滿了妥協。開發人員不得不在為多個作業系統多次構建相同的應用程式之間做出選擇,或者接受最低的公分母解決方案,以便在本機速度和準確性方面實現可移植性。通過Flutter,我們相信我們擁有一個解決方案,可以為您提供兩全其美的優勢:硬體加速圖形和UI,由本機ARM程式碼驅動,針對流行的移動作業系統。
1、關於Flutter
Flutter不會取代傳統的Apple和Android應用程式模型來構建移動應用程式; 相反,它是一個應用引擎,您可以嵌入到現有的應用程式或用於一個全新的應用程式。
我們從四個維度考慮Flutter的特徵:
1、Flutter可以使你構建漂亮的應用程式
谷歌希望設計師能夠提供他們的全部創意願景,而不會因為底層框架的限制而被迫降低成本。Flutter可讓您控制螢幕上的每個畫素,其強大的合成功能可讓您無限制地疊加和動畫圖形,視訊,文字和控制元件。Flutter包含一整套小部件,可在iOS和Android上提供完美的畫素體驗。它可以最終實現Material Design,這是Google的數字體驗開放式設計系統。
2、Flutter很快。
它由支援Chrome和Android的硬體加速的Skia 2D圖形引擎提供支援。谷歌設計了Flutter,能夠以您裝置的原生速度支援無毛刺,無抖動的圖形。Flutter程式碼由世界級的Dart平臺提供支援,該平臺可以為iOS和Android編譯為本機32位和64位ARM程式碼。
3、Flutter很有效率
Flutter引入了stateful hot reload(狀態熱過載),這是一種革命性的新功能,可供移動開發人員和設計人員實時迭代他們的應用程式。通過有狀態熱重新載入,您可以更改應用程式的程式碼並立即檢視結果,而無需重新啟動應用程式或丟失其狀態。有狀態的熱重新載入改變了開發人員構建應用程式的方式 - 在使用者調查中,開發人員說它使開發週期的效率提高了三倍。
4、Flutter是開源的。
Flutter是一個開源專案,擁有BSD風格的許可證,包括來自世界各地的數百名開發人員的貢獻。此外,還有一個充滿活力的數千個外掛生態系統。因為每個Flutter應用程式都是使用標準Android和iOS構建工具的本機應用程式,所以您可以從底層作業系統訪問所有內容,包括Android上用Kotlin或Java編寫程式碼和UI,以及iOS上的Swift或Objective-C。
將它們放在一起,將它與Visual Studio Code,Android Studio,IntelliJ IDEA 或您選擇的程式設計師編輯器的一流工具相結合,您就擁有了Flutter —— 一個從單獨程式碼庫為Android或ios構建良好本地體驗的開發環境。
2、增長和勢頭
谷歌在十個月前宣佈了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構建的應用程式的範圍和種類:
3、Flutter1.0新功能
自第一個測試版以來,我們一直致力於為Flutter新增功能和潤色。特別是,我們通過新的小部件完善了對畫素完美iOS應用程式的支援; 增加了對近二十種不同Firebase服務的支援; 並致力於提高效能並減少Flutter應用程式的大小。我們還根據社群的反饋結束了數千個問題。
Flutter還包括最新版本的Dart平臺,Dart 2.1,提供更小的程式碼大小,更快的型別檢查,以及更好的型別錯誤可用性。Dart 2.1還具有新的語言功能,可在構建使用者體驗時提高工作效率。已經採用Dart 2.1的開發人員告訴我們,只需切換到最新的引擎,他們就能看到顯著的速度提升:
雖然1.0版本的主要焦點是錯誤修復和穩定,但我們還推出了兩個主要新功能的預覽,供開發人員在預覽模式下試用,我們預計將在2019年2月的下一季度版本中釋出:新增到應用程式和平臺檢視。
4、新增到App
當我們第一次構建Flutter時,我們專注於有人從頭開始構建新應用程式的生產力。但是,當然,並不是每個人都有能夠以乾淨的名義開始的奢侈品。與我們的一些大客戶交談時,很明顯他們希望將Flutter用於現有應用程式中的新使用者旅程或功能,或者將現有應用程式分階段轉換為Flutter。
Flutter的架構很好地支援這個模型:畢竟,每個Flutter應用程式都包含一個主機Android和iOS容器。但是我們一直在努力通過更新現有應用程式的模板,工具和指南來更容易地逐步採用Flutter。我們更容易在Flutter和主機程式碼之間共享資產。我們還重新設計了工具,以便在不使用應用程式啟動偵錯程式的情況下輕鬆連線到現有的Flutter流程。
我們將繼續努力使這一體驗更加美好。儘管許多客戶已經成功使用我們關於新增到應用程式的指南,但我們仍在繼續新增示例並擴充套件對複雜方案的支援。與此同時,我們將Flutter新增到現有應用程式的說明在我們的維基上,您可以跟蹤GitHub專案板上的剩餘工作。
5、平臺檢視Platform Views
雖然新增到應用程式是一種將Flutter逐漸引入現有應用程式的有用方法,但有時反過來並將一個Android或iPhone平臺控制元件嵌入到Flutter應用程式中會很有用。
因此,我們引入了平臺檢視小部件(AndroidView
和UiKitView
),讓您可以在每個平臺上嵌入此類內容。我們幾個月來一直在預覽Android支援,但現在我們正在擴充套件對iOS的支援,並開始新增利用此功能的 Google Maps 和 **WebView **等外掛。
與其他元件一樣,我們的平臺檢視小部件參與組合模型,這意味著您可以將其與其他Flutter內容整合。例如,在上面的螢幕截圖中,右下角的浮動操作按鈕是Flutter小部件,其背景顏色為50%alpha。這充分展示了Flutter的獨特建築優勢。
雖然這項工作已經為開發人員準備好了,但我們仍在繼續努力提高效能和裝置相容性,因此我們建議您在部署依賴於PlatformView的應用時要謹慎。我們將繼續積極優化平臺檢視,並期望它們能夠及時為我們的下一季度更新做好準備。
6、超越移動端的Flutter
到目前為止,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上執行而無需更改。
當然,移動端仍然是我們的當務之急,您可以期待在未來幾個月內看到谷歌對這些核心移動方案的大部分研發成果。