跨平臺———Flutter

Flutter(移動應(yīng)用程序開發(fā)框架)

????????是谷歌的移動UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。 Flutter可以與現(xiàn)有的代碼一起工作。在全世界,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費、開源的。也是構(gòu)建未來的Google Fuchsia??應(yīng)用的主要方式。

Flutter 概況

????????Flutter是谷歌的移動UI框架?[4]?,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。 Flutter可以與現(xiàn)有的代碼一起工作。在全世界,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費、開源的。它也是構(gòu)建未來的Google Fuchsia?[1]?應(yīng)用的主要方式。

????????Flutter組件采用現(xiàn)代響應(yīng)式框架構(gòu)建,這是從React中獲得的靈感,中心思想是用組件(widget)構(gòu)建你的UI。 組件描述了在給定其當(dāng)前配置和狀態(tài)時他們顯示的樣子。當(dāng)組件狀態(tài)改變,組件會重構(gòu)它的描述(description),F(xiàn)lutter會對比之前的描述, 以確定底層渲染樹從當(dāng)前狀態(tài)轉(zhuǎn)換到下一個狀態(tài)所需要的最小更改。

Flutter特性

快速開發(fā)

????????Flutter的熱重載幫助你快捷方便的試驗、重構(gòu)UI、添加特性和修復(fù)bug。在仿真器、模擬器和ios、android硬件上體驗亞秒級的重載,而不會丟失狀態(tài)。

絢麗UI

????????通過Flutter內(nèi)建的漂亮的質(zhì)感設(shè)計和Cupertino(ios-flavor)小工具、豐富的動畫API,平滑的自然滾動和平臺感知,讓用戶感到滿意。

響應(yīng)式

????????通過Flutter的現(xiàn)代響應(yīng)式(Reactive)框架和豐富的平臺布局和基礎(chǔ)組件輕松構(gòu)建您的用戶界面。用強大而靈活的API解決2D、動畫、手勢、效果等難題。

訪問原生功能

????????通過平臺api、第三方sdk和原生代碼使您的應(yīng)用變得生動起來。Flutter讓您可以重用您現(xiàn)有的java、swift和Objc代碼,并在iOS和Android上訪問原生特性和SDK。

框架結(jié)構(gòu)

????????Flutter的主要結(jié)構(gòu)包括:

????????????????Flutter engine

????????????????Foundation library

????????????????Design-specific widgets

相對優(yōu)勢


為什么選用Dart語言?

????????相信很多人都對Flutter選用了Dart語言感到疑惑不解,甚至有人都還不知道Dart語言。“為什么Flutter會選用Dart?”知乎網(wǎng)友馬超曾當(dāng)面向Flutter 的開發(fā)專家 Divod進行了求證,Divod表示“因為 Dart 的開發(fā)團隊就在旁邊,他們能給到我們很快的支持,雙方溝通也會很順利?!?/p>

????????和其它響應(yīng)式視圖的系統(tǒng)一樣,F(xiàn)lutter在刷新視圖樹時會創(chuàng)建很多只在一幀內(nèi)存在的對象,而Dart “generational garbage collection” 則對于對象消耗資源相對較少的系統(tǒng)非常有效。而且使用單個個pointer bump來完成對象的分配,有助于避免UI卡頓。

????????不過,Dart也有一個很大的缺陷,那就是可讀性不好。多位網(wǎng)友吐槽Dart括號太多、嵌套復(fù)雜,無論是從邏輯上還是可讀性上相比都與React Native有差距。也有網(wǎng)友表示Dart寫法屬于底層寫法,等到社區(qū)發(fā)展壯大,加顆語法糖也是分分鐘的事情。

跨平臺

????????提到跨平臺,很多人都會自然而然的聯(lián)想到一個名字“React Native”,程序員可以利用JavaScript和React獲得一致的開發(fā)體驗,但是RN在實際平臺上還需要適配和橋接差異性。

????????而Flutter則是依靠Flutter Engine虛擬機在iOS和Android上運行,開發(fā)人員可以通過Flutter框架和API在內(nèi)部進行交互。Flutter Engine使用C/C++編寫,具有低延遲輸入和高幀速率的特點。除此之外,F(xiàn)lutter提供了自己的小部件集合,可以直接在OS平臺提供的畫布上描繪控件。

????????有網(wǎng)友稱:RN是將一種設(shè)計理念延伸到兩個平臺,而Flutter則實現(xiàn)了一套代碼,部署多個平臺。

性能和體驗

????????Flutter中UI組件和渲染器都從平臺中集成到用戶的應(yīng)用程序中,所以原來虛擬的控件樹是真實的控件樹,所以渲染和繪制的速度會很快,動畫發(fā)生在用戶空間中,開發(fā)人員也可以對其進行很多的控制。有網(wǎng)友在親測了Flutter后表示:在頁面渲染方面,F(xiàn)lutter比RN各具優(yōu)勢,圖片量越大,F(xiàn)lutter的流暢度優(yōu)勢越大。

????????除此之外,在以下方面Flutter也有優(yōu)勢:

????????????· 響應(yīng)式視圖,不需要JavaScript的橋接器

????????????· 性能更好,兼容性更好

????????????· 代碼將AOT編譯為本機(ARM)代碼

????????????· 美觀,可定制的UI組件,開發(fā)人員完全控制UI組件和布局

????????????· 強大的開發(fā)者工具,驚人的熱重新加載



附上中文文檔:https://flutterchina.club/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容