前言
Flutter1.0穩(wěn)定版于2018年12月5號(hào)的終于發(fā)布了。我們?yōu)榇烁械礁吲d是目。對(duì)于開(kāi)發(fā)者來(lái)說(shuō)谚攒,有了穩(wěn)定版相當(dāng)于一個(gè)定心丸令境。本文主要介紹Fllutter1.0的一些功能和相關(guān)工具挣菲。
系列博文鏈接:
Flutter基礎(chǔ)篇(1)-- 跨平臺(tái)開(kāi)發(fā)框架和工具集錦
Flutter基礎(chǔ)篇(2)-- 老司機(jī)用一篇博客帶你快速熟悉Dart語(yǔ)法
Flutter基礎(chǔ)篇(3)-- 老司機(jī)用一篇博客帶你快速熟悉Dart語(yǔ)法
Flutter基礎(chǔ)篇(4)-- Flutter填坑全面總結(jié)
Flutter基礎(chǔ)篇(5)-- Flutter代碼模板,解放雙手栅盲,提高開(kāi)發(fā)效率必備
Flutter基礎(chǔ)篇(6)-- 水平和垂直布局詳解
Flutter進(jìn)階篇(1)-- 手把手帶你快速上手調(diào)試Flutter項(xiàng)目
Flutter進(jìn)階篇(2)-- Flutter路由詳解
Flutter進(jìn)階篇(3)-- Flutter 的手勢(shì)(GestureDetector)分析詳解
Flutter進(jìn)階篇(4)-- Flutter的Future異步詳解
北京時(shí)間12月5號(hào)凌晨11點(diǎn)45分汪诉,在Flutter Live,谷歌Flutter團(tuán)隊(duì)宣布推出Flutter 1.0,這是谷歌UI工具包的第一個(gè)穩(wěn)定版本扒寄,用于從單個(gè)代碼庫(kù)為iOS和Android創(chuàng)建美妙的原生體驗(yàn)鱼鼓。
今天的跨平臺(tái)移動(dòng)開(kāi)發(fā)充滿(mǎn)了妥協(xié)。開(kāi)發(fā)人員不得不在為多個(gè)操作系統(tǒng)多次構(gòu)建相同的應(yīng)用程序之間做出選擇该编,或者接受最低的公分母解決方案迄本,以便在本機(jī)速度和準(zhǔn)確性方面實(shí)現(xiàn)可移植性。通過(guò)Flutter课竣,我們相信我們擁有一個(gè)解決方案嘉赎,可以為您提供兩全其美的優(yōu)勢(shì):硬件加速圖形和UI,由本機(jī)ARM代碼驅(qū)動(dòng)于樟,針對(duì)流行的移動(dòng)操作系統(tǒng)公条。
1、關(guān)于Flutter
Flutter不會(huì)取代傳統(tǒng)的Apple和Android應(yīng)用程序模型來(lái)構(gòu)建移動(dòng)應(yīng)用程序; 相反迂曲,它是一個(gè)應(yīng)用引擎靶橱,您可以嵌入到現(xiàn)有的應(yīng)用程序或用于一個(gè)全新的應(yīng)用程序。
我們從四個(gè)維度考慮Flutter的特征:
1路捧、Flutter可以使你構(gòu)建漂亮的應(yīng)用程序
谷歌希望設(shè)計(jì)師能夠提供他們的全部創(chuàng)意愿景关霸,而不會(huì)因?yàn)榈讓涌蚣艿南拗贫黄冉档统杀尽lutter可讓您控制屏幕上的每個(gè)像素杰扫,其強(qiáng)大的合成功能可讓您無(wú)限制地疊加和動(dòng)畫(huà)圖形队寇,視頻,文本和控件涉波。Flutter包含一整套小部件,可在iOS和Android上提供完美的像素體驗(yàn)炭序。它可以最終實(shí)現(xiàn)Material Design啤覆,這是Google的數(shù)字體驗(yàn)開(kāi)放式設(shè)計(jì)系統(tǒng)。
2惭聂、Flutter很快窗声。
它由支持Chrome和Android的硬件加速的Skia 2D圖形引擎提供支持。谷歌設(shè)計(jì)了Flutter辜纲,能夠以您設(shè)備的原生速度支持無(wú)毛刺笨觅,無(wú)抖動(dòng)的圖形。Flutter代碼由世界級(jí)的Dart平臺(tái)提供支持耕腾,該平臺(tái)可以為iOS和Android編譯為本機(jī)32位和64位ARM代碼见剩。
3、Flutter很有效率
Flutter引入了stateful hot reload(狀態(tài)熱重載)扫俺,這是一種革命性的新功能苍苞,可供移動(dòng)開(kāi)發(fā)人員和設(shè)計(jì)人員實(shí)時(shí)迭代他們的應(yīng)用程序。通過(guò)有狀態(tài)熱重新加載,您可以更改應(yīng)用程序的代碼并立即查看結(jié)果羹呵,而無(wú)需重新啟動(dòng)應(yīng)用程序或丟失其狀態(tài)骂际。有狀態(tài)的熱重新加載改變了開(kāi)發(fā)人員構(gòu)建應(yīng)用程序的方式 - 在用戶(hù)調(diào)查中,開(kāi)發(fā)人員說(shuō)它使開(kāi)發(fā)周期的效率提高了三倍冈欢。
4歉铝、Flutter是開(kāi)源的。
Flutter是一個(gè)開(kāi)源項(xiàng)目凑耻,擁有BSD風(fēng)格的許可證太示,包括來(lái)自世界各地的數(shù)百名開(kāi)發(fā)人員的貢獻(xiàn)。此外拳话,還有一個(gè)充滿(mǎn)活力的數(shù)千個(gè)插件生態(tài)系統(tǒng)先匪。因?yàn)槊總€(gè)Flutter應(yīng)用程序都是使用標(biāo)準(zhǔn)Android和iOS構(gòu)建工具的本機(jī)應(yīng)用程序,所以您可以從底層操作系統(tǒng)訪問(wèn)所有內(nèi)容弃衍,包括Android上用Kotlin或Java編寫(xiě)代碼和UI呀非,以及iOS上的Swift或Objective-C。
將它們放在一起镜盯,將它與Visual Studio Code岸裙,Android Studio,IntelliJ IDEA 或您選擇的程序員編輯器的一流工具相結(jié)合速缆,您就擁有了Flutter —— 一個(gè)從單獨(dú)代碼庫(kù)為Android或ios構(gòu)建良好本地體驗(yàn)的開(kāi)發(fā)環(huán)境降允。
2、增長(zhǎng)和勢(shì)頭
谷歌在十個(gè)月前宣布了Flutter在移動(dòng)世界大會(huì)上的第一個(gè)測(cè)試版艺糜,我們很高興看到它被更廣泛的社區(qū)采用的速度有多快剧董,正如已經(jīng)發(fā)布到Apple和Apple的數(shù)千個(gè)Flutter應(yīng)用程序所證明的那樣。甚至在1.0發(fā)布之前破停,Google Play就存儲(chǔ)了翅楼。很明顯,開(kāi)發(fā)人員已準(zhǔn)備好采用新的UI開(kāi)發(fā)方法真慢。
在Flutter團(tuán)隊(duì)內(nèi)部毅臊,F(xiàn)lutter正在Google上用于各種各樣的產(chǎn)品,谷歌廣告已經(jīng)為他們的iOS和Android應(yīng)用程序切換到Flutter黑界。甚至在1.0之前管嬉,包括Abbey Road Studios,阿里巴巴朗鸠,Capital One蚯撩,Groupon,Hamilton烛占,京東求厕,飛利浦Hue,Reflectly和騰訊 在內(nèi)的廣泛全球客戶(hù)正在使用Flutter開(kāi)發(fā)或發(fā)布應(yīng)用程序。
來(lái)自Capital One團(tuán)隊(duì)的高級(jí)工程總監(jiān)邁克爾·瓊斯(Michael Jones)說(shuō)呀癣,他們對(duì)Flutter的經(jīng)歷如下:
“我們對(duì)Flutter對(duì)高性能跨平臺(tái)開(kāi)發(fā)的獨(dú)特見(jiàn)解感到興奮美浦。我們的工程師對(duì)快速開(kāi)發(fā)承諾和熱重載功能表示贊賞,在過(guò)去的一年中项栏,我們看到了框架浦辨,特別是本機(jī)集成的巨大進(jìn)步。
“Flutter可以讓Capital One想象不是'iOS或Android-first'時(shí)尚的功能沼沈,而是真正的移動(dòng)優(yōu)先模式流酬。我們很高興看到Flutter 1.0并繼續(xù)對(duì)進(jìn)步的速度和工程界的興奮×辛恚“
在今天凌晨的Flutter Live活動(dòng)中芽腾,受歡迎的支付服務(wù)廣場(chǎng)宣布推出兩款新的Flutter SDK,可以輕松接受Flutter的商品和服務(wù)付款页衙,無(wú)論是使用Square支付閱讀器還是在移動(dòng)應(yīng)用程序內(nèi)付款摊滔。Square展示了使用來(lái)自Collins Family Orchards的應(yīng)用程序支付SDK的示例,這是一個(gè)在太平洋西北地區(qū)農(nóng)貿(mào)市場(chǎng)種植和銷(xiāo)售水果的家庭農(nóng)場(chǎng)店乐。
Collins Family Orchards應(yīng)用程序的開(kāi)發(fā)人員Dean Papastrat對(duì)此有所了解:
“我被生產(chǎn)構(gòu)建中的所有動(dòng)畫(huà)和轉(zhuǎn)換的速度所迷惑艰躺。作為一名Web開(kāi)發(fā)人員,過(guò)渡到Flutter非常容易眨八,我無(wú)法相信我能夠構(gòu)建一個(gè)完全正常運(yùn)行的應(yīng)用程序可以在一周內(nèi)付款腺兴。“
同樣在Flutter Live廉侧,2Dimensions宣布即將推出Flare页响,這是一款非凡的新工具,可供設(shè)計(jì)師創(chuàng)建矢量動(dòng)畫(huà)段誊,可直接嵌入到Flutter應(yīng)用程序中并使用代碼進(jìn)行操作闰蚕。Flare消除了在一個(gè)應(yīng)用程序中設(shè)計(jì),在另一個(gè)應(yīng)用程序中設(shè)置動(dòng)畫(huà)枕扫,然后將所有這些轉(zhuǎn)換為特定于設(shè)備的資產(chǎn)和代碼的需要陪腌。
使用Flare構(gòu)建的動(dòng)畫(huà)可以作為窗口小部件嵌入到現(xiàn)有的Flutter應(yīng)用程序中辱魁,允許它們參與完整的合成器并與其他文本烟瞧,圖形圖層甚至UI小部件重疊。以這種方式集成可以將動(dòng)畫(huà)從其他體系結(jié)構(gòu)的“黑盒子”限制中解放出來(lái)染簇,并允許設(shè)計(jì)人員和開(kāi)發(fā)人員之間的持續(xù)協(xié)作直到應(yīng)用程序完成参滴。Flutter和Flare之間的這種緊密集成為想要?jiǎng)?chuàng)造高度完美的移動(dòng)體驗(yàn)的數(shù)字設(shè)計(jì)師和動(dòng)畫(huà)師提供了獨(dú)特的引人注目的產(chǎn)品。
另一個(gè)打賭Flutter的合作伙伴是Nevercode锻弓,這是一家快速增長(zhǎng)的移動(dòng)應(yīng)用程序持續(xù)集成和交付(CI / CD)工具提供商砾赔。在Flutter Live,他們發(fā)布了Codemagic,這是專(zhuān)為Flutter設(shè)計(jì)的新工具暴心,可以通過(guò)單一自動(dòng)化輕松實(shí)現(xiàn)為Android和iOS構(gòu)建和打包Flutter應(yīng)用程序的過(guò)程妓盲。Codemagic現(xiàn)已推出測(cè)試版,可讓您選擇包含F(xiàn)lutter項(xiàng)目的GitHub倉(cāng)庫(kù)专普,只需點(diǎn)擊幾下悯衬,即可創(chuàng)建運(yùn)行測(cè)試的持續(xù)構(gòu)建流程,并生成可上傳到Apple和Google Play商店的二進(jìn)制應(yīng)用程序包檀夹。
我們整理了一個(gè)簡(jiǎn)短的視頻筋粗,以突出開(kāi)發(fā)人員自測(cè)試版以來(lái)使用Flutter構(gòu)建的應(yīng)用程序的范圍和種類(lèi):
3、Flutter1.0新功能
自第一個(gè)測(cè)試版以來(lái)炸渡,我們一直致力于為Flutter添加功能和潤(rùn)色娜亿。特別是,我們通過(guò)新的小部件完善了對(duì)像素完美iOS應(yīng)用程序的支持; 增加了對(duì)近二十種不同F(xiàn)irebase服務(wù)的支持; 并致力于提高性能并減少Flutter應(yīng)用程序的大小蚌堵。我們還根據(jù)社區(qū)的反饋結(jié)束了數(shù)千個(gè)問(wèn)題买决。
Flutter還包括最新版本的Dart平臺(tái),Dart 2.1辰斋,提供更小的代碼大小策州,更快的類(lèi)型檢查,以及更好的類(lèi)型錯(cuò)誤可用性宫仗。Dart 2.1還具有新的語(yǔ)言功能够挂,可在構(gòu)建用戶(hù)體驗(yàn)時(shí)提高工作效率。已經(jīng)采用Dart 2.1的開(kāi)發(fā)人員告訴我們藕夫,只需切換到最新的引擎孽糖,他們就能看到顯著的速度提升:
雖然1.0版本的主要焦點(diǎn)是錯(cuò)誤修復(fù)和穩(wěn)定,但我們還推出了兩個(gè)主要新功能的預(yù)覽毅贮,供開(kāi)發(fā)人員在預(yù)覽模式下試用办悟,我們預(yù)計(jì)將在2019年2月的下一季度版本中發(fā)布:添加到應(yīng)用程序和平臺(tái)視圖。
4滩褥、添加到App
當(dāng)我們第一次構(gòu)建Flutter時(shí)病蛉,我們專(zhuān)注于有人從頭開(kāi)始構(gòu)建新應(yīng)用程序的生產(chǎn)力。但是瑰煎,當(dāng)然铺然,并不是每個(gè)人都有能夠以干凈的名義開(kāi)始的奢侈品。與我們的一些大客戶(hù)交談時(shí)酒甸,很明顯他們希望將Flutter用于現(xiàn)有應(yīng)用程序中的新用戶(hù)旅程或功能魄健,或者將現(xiàn)有應(yīng)用程序分階段轉(zhuǎn)換為Flutter。
Flutter的架構(gòu)很好地支持這個(gè)模型:畢竟插勤,每個(gè)Flutter應(yīng)用程序都包含一個(gè)主機(jī)Android和iOS容器沽瘦。但是我們一直在努力通過(guò)更新現(xiàn)有應(yīng)用程序的模板革骨,工具和指南來(lái)更容易地逐步采用Flutter。我們更容易在Flutter和主機(jī)代碼之間共享資產(chǎn)析恋。我們還重新設(shè)計(jì)了工具良哲,以便在不使用應(yīng)用程序啟動(dòng)調(diào)試器的情況下輕松連接到現(xiàn)有的Flutter流程。
我們將繼續(xù)努力使這一體驗(yàn)更加美好助隧。盡管許多客戶(hù)已經(jīng)成功使用我們關(guān)于添加到應(yīng)用程序的指南臂外,但我們?nèi)栽诶^續(xù)添加示例并擴(kuò)展對(duì)復(fù)雜方案的支持。與此同時(shí)喇颁,我們將Flutter添加到現(xiàn)有應(yīng)用程序的說(shuō)明在我們的維基上漏健,您可以跟蹤GitHub項(xiàng)目板上的剩余工作。
5橘霎、平臺(tái)視圖Platform Views
雖然添加到應(yīng)用程序是一種將Flutter逐漸引入現(xiàn)有應(yīng)用程序的有用方法蔫浆,但有時(shí)反過(guò)來(lái)并將一個(gè)Android或iPhone平臺(tái)控件嵌入到Flutter應(yīng)用程序中會(huì)很有用。
因此姐叁,我們引入了平臺(tái)視圖小部件(AndroidView和UiKitView)瓦盛,讓您可以在每個(gè)平臺(tái)上嵌入此類(lèi)內(nèi)容。我們幾個(gè)月來(lái)一直在預(yù)覽Android支持外潜,但現(xiàn)在我們正在擴(kuò)展對(duì)iOS的支持原环,并開(kāi)始添加利用此功能的 Google Maps 和 **WebView **等插件。
與其他組件一樣处窥,我們的平臺(tái)視圖小部件參與組合模型嘱吗,這意味著您可以將其與其他Flutter內(nèi)容集成。例如滔驾,在上面的屏幕截圖中谒麦,右下角的浮動(dòng)操作按鈕是Flutter小部件,其背景顏色為50%alpha哆致。這充分展示了Flutter的獨(dú)特建筑優(yōu)勢(shì)绕德。
雖然這項(xiàng)工作已經(jīng)為開(kāi)發(fā)人員準(zhǔn)備好了,但我們?nèi)栽诶^續(xù)努力提高性能和設(shè)備兼容性摊阀,因此我們建議您在部署依賴(lài)于PlatformView的應(yīng)用時(shí)要謹(jǐn)慎耻蛇。我們將繼續(xù)積極優(yōu)化平臺(tái)視圖,并期望它們能夠及時(shí)為我們的下一季度更新做好準(zhǔn)備胞此。
6臣咖、超越移動(dòng)端的Flutter
到目前為止,F(xiàn)lutter的主要目標(biāo)是iOS和Android豌鹤。然而亡哄,我們對(duì)Flutter的抱負(fù)不僅僅是從移動(dòng)設(shè)備擴(kuò)展到更廣泛的平臺(tái)枝缔。實(shí)際上布疙,F(xiàn)lutter從一開(kāi)始就被設(shè)計(jì)為便攜式UI工具包蚊惯,其靈活性足以在像素被繪制的任何地方進(jìn)行。
其中一些工作已在公開(kāi)場(chǎng)合進(jìn)行灵临。Flutter Desktop Embedding是一個(gè)早期階段的項(xiàng)目截型,它將Flutter引入桌面操作系統(tǒng),包括Windows儒溉,MacOS和Linux宦焦。我們最近還發(fā)布了在Raspberry Pi上使用Flutter的非正式細(xì)節(jié),作為向可能不包含完整桌面環(huán)境的小規(guī)模設(shè)備演示Flutter嵌入支持的一種方式顿涣。
本周波闹,在Flutter Live,我們第一次看到了我們正在實(shí)驗(yàn)室中進(jìn)行的實(shí)驗(yàn)項(xiàng)目涛碑,該項(xiàng)目顯著擴(kuò)展了Flutter可以運(yùn)行的地方精堕。
Hummingbird是Flutter運(yùn)行時(shí)的基于Web的實(shí)現(xiàn),它利用Dart平臺(tái)的功能不僅可以編譯本機(jī)ARM代碼蒲障,還可以編譯JavaScript歹篓。這使得Flutter代碼可以在基于標(biāo)準(zhǔn)的Web上運(yùn)行而無(wú)需更改。
當(dāng)然揉阎,移動(dòng)端仍然是我們的當(dāng)務(wù)之急庄撮,您可以期待在未來(lái)幾個(gè)月內(nèi)看到谷歌對(duì)這些核心移動(dòng)方案的大部分研發(fā)成果。