Flutter 1.17版本發(fā)布

image

谷歌更新了Stable channel的新版 Flutter 1.17云头。
谷歌透露:今年到目前為止酒请,關(guān)閉的漏洞比打開(kāi)的漏洞多,導(dǎo)致凈減少了約800個(gè)問(wèn)題蔓纠。谷歌Flutter團(tuán)隊(duì)從231位貢獻(xiàn)者那里合并了3,164個(gè)PR辑畦,從而修復(fù)了許多錯(cuò)誤。

本次更新除了問(wèn)題修復(fù)和優(yōu)化外腿倚,包含了一些新功能纯出,包括iOS上的Metal支持,新的Material組件敷燎,新的Network跟蹤工具等等暂筝!此版本還包括Dart 2.8。

移動(dòng)性能和尺寸改進(jìn)

此版本的主要重點(diǎn)是性能和內(nèi)存改進(jìn)方面的總體工作硬贯。只需將您的應(yīng)用程序升級(jí)到此版本焕襟,您的用戶就會(huì)看到更快的動(dòng)畫(huà),更小的應(yīng)用程序和更低的內(nèi)存利用率饭豹。在此版本中鸵赖,默認(rèn)導(dǎo)航情況(不透明的不透明路線)的速度將提高20%-37%。對(duì)于簡(jiǎn)單的iOS動(dòng)畫(huà)拄衰,您還將看到最多減少40%的CPU / GPU使用率它褪,具體取決于硬件(在PR 14104和PR 13976中進(jìn)行了詳細(xì)介紹)。
此版本還提供了一個(gè)相當(dāng)大的應(yīng)用程序大小的改善是由于幾個(gè) 補(bǔ)丁 是 添加 了一個(gè)大的結(jié)果翘悉。例如茫打,Android的Flutter Gallery示例在2019年底為9.6MB,現(xiàn)在為8.1MB妖混,減少了18.5%老赤。
對(duì)于內(nèi)存使用,此版本將快速滾動(dòng)瀏覽大圖像減少了70%的內(nèi)存制市,這也可能導(dǎo)致性能提高诗越,具體取決于設(shè)備的內(nèi)存量。

image

測(cè)試PR隨時(shí)間合并的應(yīng)用程序內(nèi)存使用情況(條形越短越好)
但是息堂,最廣泛的性能改進(jìn)是iOS中對(duì)Metal的支持。

Metal支持可將iOS的性能提高50%

蘋(píng)果公司在iOS上對(duì)Metal的支持幾乎可以直接訪問(wèn)底層GPU块促,并且是蘋(píng)果公司推薦的圖形API荣堰。在完全支持Metal的iOS設(shè)備上,F(xiàn)lutter現(xiàn)在默認(rèn)情況下使用它竭翠,這使您的Flutter應(yīng)用程序大多數(shù)時(shí)候運(yùn)行得更快振坚,平均將渲染速度提高了約50%(取決于您的工作量)。

image

對(duì)于不完全支持Metal的設(shè)備(A7處理器之前的版本或運(yùn)行10之前的iOS版本的設(shè)備)斋扰,F(xiàn)lutter會(huì)像過(guò)去一樣使用OpenGL渡八,從而為較舊的設(shè)備提供本地渲染速度啃洋。有關(guān)更多詳細(xì)信息,請(qǐng)?jiān)贔lutter Wiki上查看iOS上的Metal常見(jiàn)問(wèn)題屎鳍。

材質(zhì)小部件:NavigationRail宏娄,DatePicker等

改進(jìn)了Flutter中實(shí)施的材料設(shè)計(jì)系統(tǒng)。在此版本中逮壁,添加NavigationRail了一個(gè)新的小部件孵坚,該小部件提供了響應(yīng)式應(yīng)用程序?qū)Ш侥P汀K怯蒅oogle Material Design團(tuán)隊(duì)設(shè)計(jì)和實(shí)施的窥淆。該NavigationRail是偉大的卖宠,可因?yàn)樗呛苋菀自谝粋€(gè)交換的移動(dòng)和臺(tái)式機(jī)外形之間切換應(yīng)用程序BottomNavigator為您的應(yīng)用程序的屏幕尺寸的增大。

image

要查看NavigationRail實(shí)際效果忧饭,請(qǐng)查看web_dashboard示例或在DartPad上嘗試扛伍。
除了新的小部件,此版本還包括“材質(zhì)” DatePicker和“文本選擇”溢出小部件的更新词裤。

image

DatePicker版本包括新的視覺(jué)效果刺洒,以匹配更新的“材料”準(zhǔn)則以及新的文本輸入模式。您可以在“ 物料日期選擇器重新設(shè)計(jì)”規(guī)范中閱讀有關(guān)詳細(xì)信息亚斋。

image

更新的文本選擇在Android上溢出

image

iOS上的更新文本選擇溢出

當(dāng)按鈕的長(zhǎng)度比沒(méi)有溢出時(shí)可以顯示的時(shí)間長(zhǎng)時(shí)作媚,文本選擇菜單現(xiàn)在可以提高Android和iOS的保真度。這在菜單項(xiàng)單詞可能更長(zhǎng)的語(yǔ)言環(huán)境中尤其明顯帅刊。
在與Flutter 1.17相同的時(shí)間范圍內(nèi)但帶外交付纸泡,F(xiàn)lutter團(tuán)隊(duì)還交付了新的Animations軟件包,該軟件包提供了實(shí)現(xiàn)新的Material motion規(guī)范的預(yù)構(gòu)建動(dòng)畫(huà)赖瞒。

image

來(lái)自Animations包的Container轉(zhuǎn)換的示例

在“實(shí)現(xiàn)運(yùn)動(dòng)”博客文章中女揭,材料設(shè)計(jì)團(tuán)隊(duì)定義了四個(gè)過(guò)渡模式,用于描述組件和全屏視圖之間的動(dòng)畫(huà):容器變換栏饮,共享軸吧兔,淡入和淡入。盡管這些動(dòng)畫(huà)在Flutter中始終可用袍嬉,但是Animations軟件包使實(shí)現(xiàn)它們變得相當(dāng)容易境蔼。將它們放到您的應(yīng)用中,今天就讓您的用戶滿意伺通!

實(shí)質(zhì)性文本比例:使Flutter文本主題現(xiàn)代化

在此版本中箍土,F(xiàn)lutter團(tuán)隊(duì)完成了2018 Material Design規(guī)范的Type Scale部分的實(shí)現(xiàn),同時(shí)沒(méi)有破壞現(xiàn)有的Flutter應(yīng)用程序罐监。2018年10月的PR 22330中增加了對(duì)新配置的選擇加入支持吴藻,但不對(duì)新名稱提供支持。現(xiàn)有的文本樣式名稱未更改弓柱,因?yàn)檫@樣做是一個(gè)重大的API更改沟堡,可能會(huì)影響大多數(shù)應(yīng)用程序侧但。此版本更新了TextTheme API以匹配當(dāng)前的Material規(guī)范,但保留了舊名稱航罗,以使您的代碼不會(huì)中斷禀横。但是,舊名稱已被棄用伤哺,因此您將收到警告燕侠,以鼓勵(lì)您采用新名稱。
下表總結(jié)了2018 Material TextStyle的名稱和配置立莉。

image

請(qǐng)注意绢彤,TextStyles所謂的body1和body2在材料設(shè)計(jì)規(guī)范被稱為bodyText1和bodyText2的TextThemeAPI。同樣蜓耻,TextStyles所謂的H1-H6說(shuō)明書(shū)中被稱為headline1-headline6中TextThemeAPI茫舶。

Google字體用于Flutter

文字和字體齊頭并進(jìn),因此刹淌,如果您對(duì)新的Material Text Scale實(shí)現(xiàn)感到興奮饶氏,那么您可能也會(huì)對(duì)新的Flutter v1.0版Google字體感到興奮。

image

Google字體易于在Flutter應(yīng)用中使用

Google字體允許開(kāi)發(fā)人員在其應(yīng)用中輕松地嘗試和使用fonts.google.com中的任何字體有勾。當(dāng)應(yīng)用程序準(zhǔn)備發(fā)布時(shí)疹启,開(kāi)發(fā)人員將決定用戶是否通過(guò)從API下載字體來(lái)接收字體,或者它與應(yīng)用程序包預(yù)先捆綁在一起蔼卡。

可訪問(wèn)性和國(guó)際化

最后喊崖,可訪問(wèn)性是Flutter團(tuán)隊(duì)持續(xù)關(guān)注的一個(gè)重要領(lǐng)域,F(xiàn)lutter應(yīng)用程序?qū)τ诒M可能廣泛的受眾可用是一個(gè)優(yōu)先事項(xiàng)雇逞。在此發(fā)行版中荤懂,已完成了全部工作,包括滾動(dòng)塘砸,文本 字段和其他輸入小部件的可訪問(wèn)性修復(fù)程序节仿。您將在GitHub的該版本中看到有關(guān)可訪問(wèn)性問(wèn)題的完整列表。Flutter團(tuán)隊(duì)鼓勵(lì)您測(cè)試自己的應(yīng)用程序的可訪問(wèn)性掉蔬,并且還通過(guò)一些推薦的最佳實(shí)踐更新了此版本中的文檔廊宪。
在國(guó)際化方面,F(xiàn)lutter團(tuán)隊(duì)一直在研究一些影響三星鍵盤輸入法的問(wèn)題女轿,這些問(wèn)題影響了各種東亞語(yǔ)言的文本輸入箭启。

工具:Dart DevTools移植到Flutter,Android快速入門等

此版本將Dart DevTools的當(dāng)前版本換成新的Flutter版本谈喳。如果想嘗試一下,可以啟動(dòng)DevTools并單擊DevTools右上角的“燒杯”圖標(biāo)戈泼。

image

當(dāng)您使用Flutter實(shí)現(xiàn)的Dart DevTools的預(yù)發(fā)布版本時(shí)婿禽,您可能會(huì)注意到各種改進(jìn)赏僧,但是最大的改進(jìn)是新的“ 網(wǎng)絡(luò)”選項(xiàng)卡。


image

如果未在Dart DevTools的預(yù)發(fā)行版中看到“網(wǎng)絡(luò)”選項(xiàng)卡(例如扭倾,如果從命令行運(yùn)行它)淀零,則可以使用以下命令手動(dòng)更新它:
$ pub globalactivate devtools
按下“記錄”按鈕后,“網(wǎng)絡(luò)”選項(xiàng)卡將顯示Flutter應(yīng)用程序的網(wǎng)絡(luò)流量膛壹。此外驾中,如果您希望從啟動(dòng)應(yīng)用程序時(shí)立即開(kāi)始捕獲網(wǎng)絡(luò)流量,則可以在main()方法中包括以下代碼行:

void main(){  
   /// 啟用網(wǎng)絡(luò)流量日志記
   HttpClient.enableTimelineLogging = true;   
   runApp(MyApp());
 }

除了更新的Dart DevTools模聋,此版本還增加了對(duì)實(shí)驗(yàn)性“快速啟動(dòng)”選項(xiàng)的支持肩民,該選項(xiàng)可讓您在定位Android時(shí)以高達(dá)70%的速度啟動(dòng)Flutter應(yīng)用程序調(diào)試。您可以通過(guò)訪問(wèn)此選項(xiàng)flutter run —-fast-start -d <your Android device>链方。此選項(xiàng)將安裝僅依賴于您的插件代碼(不包括任何Dart代碼或資產(chǎn))的通用Android應(yīng)用持痰。這允許重復(fù)flutter run命令的啟動(dòng)速度更快,因?yàn)閷?duì)Dart代碼或資產(chǎn)的更改不需要重新構(gòu)建APK祟蚀。此選項(xiàng)將您的應(yīng)用程序捆綁到實(shí)際上未在您的設(shè)備上安裝的通用Android“包裝器”中工窍,這與正常的啟動(dòng)選項(xiàng)不同。此外前酿,在某些情況下它不起作用患雏,例如,當(dāng)您使用訪問(wèn)后臺(tái)執(zhí)行的插件時(shí)罢维。另一方面淹仑,如果您的Android調(diào)試啟動(dòng)時(shí)間讓您失望,請(qǐng)嘗試一下言津。

如果您以Android為目標(biāo)攻人,則要注意的另一個(gè)變化是,現(xiàn)在創(chuàng)建新的Flutter項(xiàng)目時(shí)悬槽,AndroidX是唯一的選擇怀吻。AndroidX庫(kù)提供了稱為Android Jetpack的高級(jí)Android功能。在上一個(gè)版本中初婆,F(xiàn)lutter團(tuán)隊(duì)棄用了原始的Android支持庫(kù)蓬坡,并將其移至AndroidX作為所有新項(xiàng)目的默認(rèn)設(shè)置。在此版本中磅叛,- androidx標(biāo)志到flutter create現(xiàn)在是唯一可用的選項(xiàng)屑咳。盡管不使用AndroidX的現(xiàn)有應(yīng)用程序可以繼續(xù)使用Flutter進(jìn)行編譯,但現(xiàn)在是遷移到新庫(kù)的好時(shí)機(jī)弊琴。

如果您是Android Studio或IntelliJ用戶兆龙,則會(huì)發(fā)現(xiàn)“熱重裝”功能更具彈性。在進(jìn)行此更改之前敲董,如果您有任何分析錯(cuò)誤紫皇,“熱重裝”將不會(huì)重裝您的代碼慰安。如果分析錯(cuò)誤不會(huì)影響您當(dāng)前正在運(yùn)行的代碼(例如在單元測(cè)試中),那么這可能會(huì)令人沮喪聪铺。進(jìn)行此更改后化焕,分析錯(cuò)誤不足以阻止Hot Reload正常運(yùn)行,而取決于VM的編譯器錯(cuò)誤铃剔。

如果您希望在Android Studio或IntelliJ的Flutter插件中更早地訪問(wèn)此類更改撒桨,F(xiàn)lutter團(tuán)隊(duì)現(xiàn)在為IntelliJ插件提供了一個(gè)開(kāi)發(fā)通道,您可以選擇該通道以更快地進(jìn)行更新键兜。開(kāi)發(fā)通道的目標(biāo)是在Flutter團(tuán)隊(duì)將它們廣泛發(fā)布之前凤类,從Flutter開(kāi)發(fā)人員那里收集有關(guān)IDE集成新功能的反饋。如果您喜歡冒險(xiǎn)蝶押,并希望向Flutter工具團(tuán)隊(duì)提供早期反饋踱蠢,請(qǐng)立即注冊(cè)!

對(duì)于Visual Studio Code用戶棋电,建議使用新的Dart:列出過(guò)期的軟件包命令茎截,該命令將運(yùn)行新的“ pub outdated”命令。

image

此命令旨在幫助您跟蹤依賴項(xiàng)中的版本控制問(wèn)題赶盔。
最后但并非最不重要的一點(diǎn)是企锌,如果您發(fā)現(xiàn)自己發(fā)生Flutter崩潰,這些工具將提示您提交錯(cuò)誤于未。

image

團(tuán)隊(duì)會(huì)密切關(guān)注這些錯(cuò)誤報(bào)告的嚴(yán)重性和頻率撕攒,因此請(qǐng)?jiān)诔霈F(xiàn)提示時(shí)進(jìn)行記錄。

Customer Shoutout: MGM and Superformula

當(dāng)然烘浦,F(xiàn)lutter的存在是為了實(shí)現(xiàn)美麗的應(yīng)用程序體驗(yàn)抖坪。數(shù)字代理商做得令人驚奇的事情之一就是Superformula,該公司最近與MGM Resorts合作闷叉,對(duì)其移動(dòng)應(yīng)用程序進(jìn)行了重大更新擦俐,并已在Flutter中對(duì)其進(jìn)行了完全重建。他們報(bào)告說(shuō):“將Flutter添加到核心產(chǎn)品中握侧,可以釋放出更高的速度和靈活性蚯瞧,這對(duì)于客戶及其用戶而言,都可以轉(zhuǎn)化為真實(shí)可衡量的價(jià)值品擎÷窈希”

image

Superformula與MGM Resorts設(shè)計(jì)團(tuán)隊(duì)合作,為所有主要的網(wǎng)絡(luò)萄传,移動(dòng)和信息亭體驗(yàn)創(chuàng)建了一種新的MGM設(shè)計(jì)語(yǔ)言甚颂。通過(guò)較小的團(tuán)隊(duì)和全新的Flutter代碼庫(kù),他們能夠比以前更快地重建應(yīng)用并交付到兩個(gè)應(yīng)用商店,從而使MGM的預(yù)訂轉(zhuǎn)換率提高了9%振诬。

重大變化

與往常一樣瓣铣,每個(gè)新版本的Flutter中盡量減少重大更改的數(shù)量,這些是此版本中的重大更改贷揽。

  • #42100 使用pushReplacement(…時(shí),運(yùn)行先前路線的輔助動(dòng)畫(huà)

  • #45940棄用UpdateLiveRegionEvent

  • #49389延遲快速滾動(dòng)時(shí)的圖像解碼

  • #49391文本選擇溢出(Android)

  • #49771 未為空畫(huà)筆設(shè)置斷言緩存提示

  • #50318 實(shí)時(shí)圖像緩存

  • #50354 使用支桿盒高度計(jì)算選擇矩形梦碗,以確保它們保持在可見(jiàn)范圍內(nèi)

  • #50733在gen_l10n中生成消息查找

  • # 51435從RouteSettings移除isinitialroute

  • #52781將mouse_tracking.dart移至渲染

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末禽绪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子洪规,更是在濱河造成了極大的恐慌印屁,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斩例,死亡現(xiàn)場(chǎng)離奇詭異雄人,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)念赶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門础钠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人叉谜,你說(shuō)我怎么就攤上這事旗吁。” “怎么了停局?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵很钓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我董栽,道長(zhǎng)码倦,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任锭碳,我火速辦了婚禮袁稽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘工禾。我一直安慰自己运提,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布闻葵。 她就那樣靜靜地躺著民泵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪槽畔。 梳的紋絲不亂的頭發(fā)上栈妆,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼鳞尔。 笑死嬉橙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寥假。 我是一名探鬼主播市框,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼糕韧!你這毒婦竟也來(lái)了枫振?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤萤彩,失蹤者是張志新(化名)和其女友劉穎粪滤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體雀扶,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杖小,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了愚墓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片予权。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浪册,靈堂內(nèi)的尸體忽然破棺而出伟件,到底是詐尸還是另有隱情,我是刑警寧澤议经,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布斧账,位于F島的核電站,受9級(jí)特大地震影響煞肾,放射性物質(zhì)發(fā)生泄漏咧织。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一籍救、第九天 我趴在偏房一處隱蔽的房頂上張望习绢。 院中可真熱鬧,春花似錦蝙昙、人聲如沸闪萄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)败去。三九已至,卻和暖如春烈拒,著一層夾襖步出監(jiān)牢的瞬間圆裕,已是汗流浹背广鳍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吓妆,地道東北人赊时。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像行拢,于是被迫代替她去往敵國(guó)和親祖秒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354