1. 它來(lái)了!Flutter3.0新特性全接觸

        共 6646字,需瀏覽 14分鐘

         ·

        2022-05-16 11:16

        點(diǎn)擊上方藍(lán)字關(guān)注我,知識(shí)會(huì)給你力量


        又到了Flutter穩(wěn)定版發(fā)布的時(shí)候了--我們非常自豪地宣布Flutter 3! 僅僅三個(gè)月前,我們宣布Flutter支持Windows。今天,我們很高興地宣布,除了Windows之外,F(xiàn)lutter現(xiàn)在在macOS和Linux上也是穩(wěn)定的!

        img

        感謝我們的Flutter貢獻(xiàn)者的辛勤工作,我們已經(jīng)合并了5248個(gè)pull requests!

        作為這個(gè)版本的一部分,我們有幾件令人興奮的事情要宣布,包括Flutter對(duì)macOS和Linux的支持的更新,顯著的性能改進(jìn),移動(dòng)和網(wǎng)絡(luò)的更新--以及更多。此外,我們還有關(guān)于減少對(duì)舊版Windows的支持的消息,以及一個(gè)簡(jiǎn)短的breaking變化清單。所以,讓我們開(kāi)始談?wù)掳?

        Ready for production on all desktop platforms

        Linux和macOS已經(jīng)達(dá)到穩(wěn)定,包括以下功能。

        Cascading menus and support for the macOS system menu bar

        你現(xiàn)在可以使用PlatformMenuBar部件在macOS上創(chuàng)建平臺(tái)渲染的菜單欄,該部件支持插入平臺(tái)專用的菜單,并控制macOS應(yīng)用程序菜單中出現(xiàn)的內(nèi)容。

        gif太大,再見(jiàn)。

        Full support for international text input on all desktop platforms

        國(guó)際文本輸入,包括使用文本輸入法編輯器(IME)的語(yǔ)言,如中文、日文和韓文,在所有三個(gè)桌面平臺(tái)上都得到完全支持,包括第三方輸入法,如搜狗和谷歌日文輸入。

        Accessibility on all desktop platforms

        用于Windows、macOS和Linux的Flutter支持無(wú)障礙服務(wù),如讀屏器、無(wú)障礙導(dǎo)航和顏色反轉(zhuǎn)。

        Universal binaries by default on macOS

        從Flutter 3開(kāi)始,F(xiàn)lutter macOS桌面應(yīng)用程序被構(gòu)建為通用二進(jìn)制文件,對(duì)現(xiàn)有基于英特爾的Mac和蘋果最新的Apple Silicon設(shè)備都有原生支持。

        Deprecating Windows 7/8 for development

        在這個(gè)版本中,我們將開(kāi)發(fā)的推薦Windows版本提高到Windows 10。雖然我們沒(méi)有阻止在舊版本(Windows 7、Windows 8、Windows 8.1)上的開(kāi)發(fā),但這些版本不再受到微軟的支持,我們?cè)谶@些版本上提供有限的測(cè)試。雖然我們將繼續(xù)為舊版本提供 "最大努力 "的支持,但我們鼓勵(lì)你升級(jí)。

        ?

        注意:我們繼續(xù)為在Windows 7和Windows 8上運(yùn)行的Flutter應(yīng)用程序提供支持;這一變化只影響到推薦的開(kāi)發(fā)環(huán)境。

        ?

        Mobile updates

        我們對(duì)移動(dòng)平臺(tái)的更新包括以下內(nèi)容。

        Foldable phone support

        Flutter 3版本支持可折疊移動(dòng)設(shè)備。在微軟帶頭的合作中,新的功能和部件允許你在可折疊設(shè)備上創(chuàng)建動(dòng)態(tài)和令人愉快的體驗(yàn)。

        作為這項(xiàng)工作的一部分,MediaQuery現(xiàn)在包含一個(gè)DisplayFeatures列表,描述了設(shè)備元素的邊界和狀態(tài),如鉸鏈、折疊和切口。此外,DisplayFeatureSubScreen小組件現(xiàn)在在定位其子小組件時(shí)不會(huì)與DisplayFeatures的邊界重疊,并且已經(jīng)與框架的默認(rèn)對(duì)話框和彈出式窗口集成,使Flutter能夠感知并響應(yīng)這些元素的改變。

        img

        非常感謝微軟團(tuán)隊(duì),特別是@andreidiaconu,感謝他們的貢獻(xiàn)!

        試試Surface Duo模擬器的Sample:https://docs.microsoft.com/en-us/dual-screen/flutter/samples,包括一個(gè)帶有Flutter圖庫(kù)的特殊分支的sample,看看Flutter的雙顯示器的運(yùn)行情況。

        iOS variable refresh rate support

        Flutter現(xiàn)在支持帶有ProMotion顯示器的iOS設(shè)備上的可變刷新率,包括iPhone 13 Pro和iPad Pro。在這些設(shè)備上,F(xiàn)lutter應(yīng)用程序可以在刷新率達(dá)到120 hz的情況下進(jìn)行渲染,而以前則限制在60 hz。這使得在滾動(dòng)等快速動(dòng)畫(huà)中的體驗(yàn)更加順暢。更多細(xì)節(jié)見(jiàn)flutter.dev/go/variable-refresh-rate。

        Simplified iOS releases

        我們?cè)趂lutter build ipa命令中添加了新的選項(xiàng),以簡(jiǎn)化發(fā)布您的iOS應(yīng)用。當(dāng)您準(zhǔn)備發(fā)布到TestFlight或App Store時(shí),運(yùn)行flutter build ipa來(lái)構(gòu)建一個(gè)Xcode歸檔文件(.xcarchive文件)和一個(gè)應(yīng)用包(.ipa文件)。你可以選擇添加 --export-method ad-hoc, --export-method development, 或 --export-method enterprise。一旦應(yīng)用程序捆綁完成,通過(guò)Apple Transport macOS應(yīng)用程序或在命令行中使用xcrun altool(運(yùn)行man altool獲取App Store Connect API密鑰驗(yàn)證說(shuō)明)將其上傳到蘋果。上傳后,您的應(yīng)用程序可以發(fā)布到TestFlight或App Store。在設(shè)置了最初的Xcode項(xiàng)目設(shè)置,如顯示名稱和應(yīng)用程序圖標(biāo)后,您不再需要打開(kāi)Xcode來(lái)發(fā)布您的應(yīng)用程序。

        Gradle version update

        如果你用Flutter工具創(chuàng)建一個(gè)新的項(xiàng)目,你可能會(huì)注意到,現(xiàn)在生成的文件使用最新版本的Gradle和Android Gradle插件。對(duì)于現(xiàn)有項(xiàng)目,你需要手動(dòng)將Gradle的版本提升到7.4,將Android Gradle插件的版本提升到7.1.2。

        Sunsetting 32-bit iOS/iOS 9/iOS 10

        正如我們?cè)?022年2月宣布的2.10穩(wěn)定版,F(xiàn)lutter對(duì)32位iOS設(shè)備和iOS 9和10版本的支持即將結(jié)束。這一變化影響到iPhone 4S、iPhone 5、iPhone 5C以及第二代、第三代和第四代iPad設(shè)備。Flutter 3是支持這些iOS版本和設(shè)備的最后一個(gè)穩(wěn)定版本。

        要了解有關(guān)這一變化的更多信息,請(qǐng)看RFC:結(jié)束對(duì)32位iOS設(shè)備的支持。

        Web updates

        我們對(duì)網(wǎng)絡(luò)應(yīng)用的更新包括以下內(nèi)容。

        Image decoding

        Flutter web現(xiàn)在能自動(dòng)檢測(cè)并在支持它的瀏覽器中使用ImageDecoder API。截至今天,大多數(shù)基于Chromium的瀏覽器(Chrome、Edge、Opera、Samsung Browser等)都增加了這個(gè)API。

        新的API使用瀏覽器內(nèi)置的圖像編解碼器在主線程外異步地解碼圖像。這使圖像解碼的速度提高了2倍,而且它從不阻塞主線程,消除了以前由圖像引起的所有干擾。

        Web app lifecycles

        Flutter網(wǎng)絡(luò)應(yīng)用程序的新生命周期API使您能夠靈活地從托管HTML頁(yè)面控制Flutter應(yīng)用的啟動(dòng)過(guò)程,并幫助Lighthouse分析您的應(yīng)用的性能。這適用于許多用例,包括以下經(jīng)常要求的場(chǎng)景。

        • A splash screen
        • A loading indicator
        • 在Flutter應(yīng)用程序之前顯示的普通HTML交互頁(yè)面

        欲了解更多信息,請(qǐng)查看docs.flutter.dev上的自定義Web應(yīng)用初始化:https://docs.flutter.dev/development/platform-integration/web/initialization。

        Tooling updates

        我們對(duì)Flutter和Dart工具的更新包括。

        Updated lint package

        2.0版的lint軟件包已經(jīng)發(fā)布。

        • Flutter: https://pub.dev/packages/flutter_lints/versions/2.0.0
        • Dart: https://pub.dev/packages/lints/versions/2.0.0

        在Flutter 3中用flutter create生成的應(yīng)用程序會(huì)自動(dòng)啟用v2.0版的lints包。我們鼓勵(lì)現(xiàn)有的應(yīng)用程序、軟件包和插件通過(guò)運(yùn)行 flutter pub upgrade --major-versions flutter_lints 遷移到 v2.0,以遵循 Flutter 世界中最新和最偉大的最佳實(shí)踐。

        在v2版中,大多數(shù)新增加的lint警告都有自動(dòng)修復(fù)功能。因此,在你的應(yīng)用程序的pubspec.yaml文件中升級(jí)到最新的軟件包版本后,你可以在你的代碼庫(kù)中運(yùn)行dart fix --apply來(lái)自動(dòng)修復(fù)大多數(shù)lint警告(有些警告仍然需要一些手工操作)。還沒(méi)有使用package:flutter_lints的應(yīng)用程序、軟件包或插件可以按照遷移指南進(jìn)行遷移。

        Performance improvements

        感謝開(kāi)源貢獻(xiàn)者knopp,partial repaint已經(jīng)在支持它的Android設(shè)備上啟用。在我們的本地測(cè)試中,這一變化將Pixel 4 XL設(shè)備上backdrop_filter_perf基準(zhǔn)的平均、第90個(gè)百分點(diǎn)和第99個(gè)百分點(diǎn)的幀柵格化時(shí)間縮短了5倍。在iOS和較新的安卓設(shè)備上,當(dāng)存在單一rectangular dirty區(qū)域時(shí),現(xiàn)在啟用了partial repaint。

        我們進(jìn)一步提高了簡(jiǎn)單情況下Opacity動(dòng)畫(huà)的性能。特別是,當(dāng)一個(gè)Opacity小組件只包含一個(gè)渲染基元時(shí),通常由Opacity調(diào)用的saveLayer方法被省略。在為衡量這種優(yōu)化的好處而構(gòu)建的基準(zhǔn)中,這種情況下的光柵化時(shí)間提高了一個(gè)數(shù)量級(jí)。在未來(lái)的版本中,我們計(jì)劃將這種優(yōu)化應(yīng)用到更多的場(chǎng)景中。

        由于開(kāi)源貢獻(xiàn)者JsouLiang的工作,引擎的光柵和UI線程現(xiàn)在在Android和iOS上的運(yùn)行優(yōu)先級(jí)高于其他線程;例如,Dart VM后臺(tái)垃圾收集線程。在我們的基準(zhǔn)測(cè)試中,這導(dǎo)致平均幀構(gòu)建時(shí)間快了約20%。

        在第3版發(fā)布之前,光柵緩存的接納策略只看圖片中的繪制操作數(shù),假設(shè)任何超過(guò)幾個(gè)操作數(shù)的圖片都是緩存的好候選。不幸的是,這導(dǎo)致了引擎花費(fèi)內(nèi)存來(lái)緩存那些實(shí)際上渲染速度非常快的圖片。這個(gè)版本引入了一種機(jī)制,根據(jù)它所包含的繪制操作的成本來(lái)估計(jì)圖片的渲染復(fù)雜性。在我們的基準(zhǔn)測(cè)試中,使用這種方法作為光柵緩存的接納策略,在不降低性能的情況下減少了內(nèi)存的使用。

        感謝開(kāi)源貢獻(xiàn)者ColdPaleLight,他修復(fù)了幀調(diào)度中的一個(gè)bug,該bug導(dǎo)致iOS上少量的動(dòng)畫(huà)幀被丟棄。感謝所有報(bào)告這個(gè)問(wèn)題并提供掉幀視頻的人。

        Impeller

        該團(tuán)隊(duì)一直在努力工作,以解決iOS和其他平臺(tái)上的早期jank問(wèn)題。在Flutter 3版本中,你可以在iOS上預(yù)覽一個(gè)名為Impeller的實(shí)驗(yàn)性渲染后端。Impeller在引擎構(gòu)建時(shí)預(yù)編譯一套更小、更簡(jiǎn)單的著色器,這樣它們就不會(huì)在應(yīng)用程序運(yùn)行時(shí)被編譯;這一直是Flutter中jank的一個(gè)主要來(lái)源。Impeller還沒(méi)有為生產(chǎn)做好準(zhǔn)備,也遠(yuǎn)未完成。并非所有的Flutter功能都已實(shí)現(xiàn),但我們對(duì)其在flutter/gallery應(yīng)用程序中的保真度和性能感到足夠滿意,因此我們正在分享我們的進(jìn)展。特別是,畫(huà)廊應(yīng)用的過(guò)渡動(dòng)畫(huà)中最差的一幀速度大約是20倍。

        Impeller在iOS的一個(gè)標(biāo)志下可用。你可以向flutter運(yùn)行傳遞--enable-impeller,或者將你的Info.plist文件中的FLTEnableImpeller標(biāo)志設(shè)置為true,來(lái)嘗試一下Impeller。Impeller的開(kāi)發(fā)在Flutter的主頻道繼續(xù)進(jìn)行,我們希望在未來(lái)的版本中提供進(jìn)一步的更新。

        Inline ads on android

        當(dāng)你使用google_mobile_ads軟件包時(shí),你應(yīng)該看到在用戶的關(guān)鍵互動(dòng)方面有更好的表現(xiàn),如滾動(dòng)和頁(yè)面之間的轉(zhuǎn)換。這在新興市場(chǎng)流行的設(shè)備上尤其明顯。最重要的是,不需要修改代碼!

        在引擎蓋下,F(xiàn)lutter現(xiàn)在以異步方式組成Android視圖,通常稱為平臺(tái)視圖。這意味著Flutter光柵線程不需要等待Android視圖的渲染。相反,F(xiàn)lutter引擎使用其管理的OpenGL紋理將視圖放在屏幕上。

        More exciting updates

        Flutter生態(tài)系統(tǒng)的其他更新包括以下內(nèi)容。

        Material 3

        Flutter 3支持Material Design 3,即新一代的Material Design。Flutter 3提供了對(duì)Material 3的選擇支持;這包括Material You功能,如動(dòng)態(tài)顏色、更新的顏色系統(tǒng)和排版,對(duì)許多組件的更新,以及在Android 12中引入的新視覺(jué)效果,如新的觸摸波紋設(shè)計(jì)和拉伸過(guò)卷效果。在新的Take your Flutter app from Boring to Beautiful codelab中嘗試Material 3功能。有關(guān)如何選擇使用這些新功能以及哪些組件支持Material 3的詳細(xì)信息,請(qǐng)參見(jiàn)API文檔。關(guān)注正在進(jìn)行的Material 3 Umbrella問(wèn)題的工作。

        Theme extensions

        Flutter現(xiàn)在可以向素材庫(kù)的ThemeData添加任何東西,有一個(gè)概念叫做Theme extensions。你可以指定ThemeData.extensions,而不是擴(kuò)展(Dart意義上的)ThemeData并重新實(shí)現(xiàn)其copyWith、lerp和其他方法。另外,作為一個(gè)包的開(kāi)發(fā)者,你可以提供ThemeExtensions。更多細(xì)節(jié)請(qǐng)參見(jiàn)flutter.dev/go/theme-extensions,并查看GitHub上的這個(gè)例子。

        Ads

        我們知道,對(duì)于出版商來(lái)說(shuō),為個(gè)性化廣告征求同意和處理蘋果公司的應(yīng)用跟蹤透明度(ATT)要求是很重要的。

        為了支持這些要求,谷歌提供了用戶信息平臺(tái)(UMP)SDK,它取代了以前的開(kāi)源同意SDK。在即將發(fā)布的GMA SDK for Flutter中,我們正在增加對(duì)UMP SDK的支持,以使發(fā)布者能夠獲得用戶同意。更多細(xì)節(jié),請(qǐng)查看pub.dev上的google_mobile_ads頁(yè)面。

        Breaking changes

        隨著我們不斷發(fā)展和改進(jìn)Flutter,我們的目標(biāo)是將破壞性變化的數(shù)量降到最低。隨著Flutter 3的發(fā)布,我們有以下突破性變化。

        • Deprecated API removed after v2.10
        • Page transitions replaced by ZoomPageTransitionsBuilder
        • Migrate useDeleteButtonTooltip to deleteButtonTooltipMessage of Chips
        • ThemeData’s toggleableActiveColor property has been deprecated

        具體的遷移過(guò)程,可以參考migration guide on Flutter.dev.

        Summary

        從谷歌的Flutter團(tuán)隊(duì)來(lái)說(shuō),我們要感謝社區(qū)所做的出色工作,幫助Flutter保持其作為最受歡迎的跨平臺(tái)UI工具包的地位,正如Statista和SlashData等分析機(jī)構(gòu)所衡量的那樣。我們期待著作為一個(gè)社區(qū)一起工作,繼續(xù)提供一個(gè)由社區(qū)驅(qū)動(dòng)的工具,幫助為開(kāi)發(fā)者和用戶創(chuàng)造愉快的體驗(yàn)!

        向大家推薦下我的網(wǎng)站 https://xuyisheng.top/  點(diǎn)擊原文一鍵直達(dá)

        專注 Android-Kotlin-Flutter 歡迎大家訪問(wèn)



        往期推薦


        本文原創(chuàng)公眾號(hào):群英傳,授權(quán)轉(zhuǎn)載請(qǐng)聯(lián)系微信(Tomcat_xu),授權(quán)后,請(qǐng)?jiān)谠瓌?chuàng)發(fā)表24小時(shí)后轉(zhuǎn)載。
        < END >
        作者:徐宜生

        更文不易,點(diǎn)個(gè)“三連”支持一下??


        瀏覽 68
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 天天射天天看天天操天天 | 精品国产污污免费网站入口爱酱 | 国产一区二区免费播放 | 日韩三级电影在线 | 成年人视频网站 |