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/