小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

淺談Flutter入門知識

 碼農(nóng)9527 2021-04-16

  Flutter是Google的移動UI框架,可以在iOS和Android上快速構(gòu)建高質(zhì)量的本地用戶界面。一個代碼可以同時生成兩個高性能、高保真的iOS和Android應用。Flutter的目標是讓開發(fā)者在不同的平臺上交付自然流暢的高性能應用,兼容滾動行為、排版、圖標等方面的差異。Flutter的開發(fā)語言是Dart。如果你用過Java或JavaScript等語言,你可以很快上手,甚至有些Flutter應用是沒有編程經(jīng)驗的人寫的!世界上,F(xiàn)lutter被越來越多的開發(fā)者和組織使用,F(xiàn)lutter完全免費開源。

web

    跨平臺自繪引擎

    Flutter不同于其他大多數(shù)跨平臺框架,因為Flutter不使用網(wǎng)絡或操作系統(tǒng)的本地控制。相反,F(xiàn)lutter使用自己的高性能渲染引擎繪制widget。這不僅可以保證安卓和iOS上用戶界面的一致性,還可以避免依賴本地控制帶來的限制和高昂的維護成本。

    使用Skia作為其2D渲染引擎的Flutter,Skia是一個2D繪圖引擎庫,它的前身是一個向量繪圖軟件,Chrome和Android都使用Skia作為繪圖引擎。Skia提供了非常友好的API,并且在圖形轉(zhuǎn)換,文本渲染,位圖渲染等方面都有友好高效的表現(xiàn)。Skia是跨平臺的,因此可以嵌入到Flutter的iOSDK中,而不需要研究iOS閉源的CoreGraphics/CoreAnimation。

    現(xiàn)在Flutter默認支持iOS,Android,Fuchsia三個移動平臺(Google新的自主開發(fā)操作系統(tǒng))。但是Flutter也可以支持Web開發(fā)和PC開發(fā),這本書的例子和介紹主要是基于iOS和Android平臺,其他平臺的讀者可以自己了解。

    Flutter的優(yōu)點

    開發(fā)高效毫秒級的熱負荷。修改后,您的應用界面將立即更新。使用豐富可定制的widget在幾分鐘內(nèi)構(gòu)建本地界面。

    富有表現(xiàn)力和靈活的用戶界面快速發(fā)布專注于本地體驗的功能。分層結(jié)構(gòu)允許您完全定制,從而實現(xiàn)難以置信的快速渲染和豐富的表現(xiàn)力和靈活的設計。

    本機性能Flutter包含許多核心widget,例如滾動,導航,圖標和字體等等,這些都能在iOS和Android上實現(xiàn)本機應用程序的相同性能。

    Flutter開發(fā)語言

    Flutter使用Dart作為開發(fā)框架和widget語言。

    為何選擇Dart語言?

    Flutter評估了四個主要維度,并考慮了框架作者、開發(fā)者和最終用戶的需求。我們發(fā)現(xiàn)不同的語言在不同的層面上滿足了一些要求,但是Dart在所有的評估維度上都得分很高,符合我們所有的要求和標準。

    在Dart運行過程中,編譯器支持Flutter關鍵特征的組合:

    基于JIT的快速開發(fā)周期:允許使用類型的語言改變形狀狀態(tài)的熱負荷

    AOT編譯器可以生成高效的ARM代碼,可以快速啟動,具有可預測的生產(chǎn)部署性能。

    另外,flutter開發(fā)團隊與Dart社區(qū)緊密合作,Dart社區(qū)正積極投入資源,以改善Dart在Flutter中的應用。舉例來說,當我們使用Dart時,這種語言并沒有提供工具鏈來生成本地二進制文件(這對實現(xiàn)可預測的高性能非常有幫助),但現(xiàn)在已經(jīng)實現(xiàn)了,因為Dart團隊已經(jīng)為Flutter構(gòu)建了它。類似地,DartVM以前已經(jīng)對吞吐量進行了優(yōu)化,但是團隊現(xiàn)在正在優(yōu)化VM的延遲時間,這對Flutter的工作負荷更為重要。

    Dart以下主要標準獲得高分:

    Flutter的主要價值主張之一是讓開發(fā)者使用相同的代碼庫為iOS和Android創(chuàng)建應用程序,從而節(jié)省工程資源。高效率的語言能進一步加快開發(fā)周期,使Flutter更具吸引力。它對于我們的framework團隊和開發(fā)者來說都很重要。大多數(shù)Flutter功能都是通過Dart實現(xiàn)的,所以我們需要在100,000行代碼時保持高效率,而不會犧牲framework和widget的可讀性。

    雖然我們可以使用非面向?qū)ο蟮恼Z言,但這意味著我們應該重新解決幾個問題。此外,大多數(shù)開發(fā)者都有面向?qū)ο箝_發(fā)的經(jīng)驗,所以更容易學會如何使用Flutter進行開發(fā)。

    可預測性和高性。借助于Flutter,我們希望開發(fā)人員能夠快速創(chuàng)建流暢的用戶體驗。為了實現(xiàn)這一目標,我們需要在每個動畫框架中運行大量代碼。這意味著我們需要一種語言,它不僅能提供高性能,還能提供可預測性能,而且不會導致丟幀的周期性暫停。

    Flutter框架采用函數(shù)式流,它在很大程度上依賴于底層的內(nèi)存分配器,因此有效地處理小的、短期的內(nèi)存分配是非常重要的,因此Flutter不能在缺乏該功能的語言中有效地工作。

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

    Flutter框架是一個分層結(jié)構(gòu),每一層都建立在前一層。

    這個設計的目標是幫助你用更少的代碼做更多的事情。比如Material層是通過組合來自Widget層的基本W(wǎng)idget而構(gòu)建的,Widgets層本身是通過低級物體渲染層構(gòu)建的。

    層為構(gòu)建應用程序提供了許多選項。選擇一種定制的方法來釋放框架的所有表現(xiàn)力,或者使用構(gòu)件層中的構(gòu)建塊或混合匹配。您可以實現(xiàn)Flutter提供的所有現(xiàn)成widget,或者使用Flutter團隊用于構(gòu)建框架的相同工具和技術(shù)來創(chuàng)建您自己的定制widget。

    沒什么是隱藏的。您可以從高層次、統(tǒng)一的widget概念中獲得開發(fā)效率優(yōu)勢,而不會犧牲您想要深入下層的能力。

    Flutter框架分為三層Framework,Engine,Embedder。

    FlutterFramework

    Framework使用dart語言,包括UI、文字、圖片、按鈕等Widgets、渲染、動畫、手勢等。這部分的核心代碼是flutter倉庫下的flutterpackage,sky_engine倉庫下的io,async,ui(dart:ui庫提供Flutter框架和引擎之間的界面)等。

    FlutterEngine

    Engine使用C++實現(xiàn),主要包括:Skia、Dart和Text。-Skia是一個開源的二維圖形庫,提供適合各種軟硬件平臺的通用API。作為GoogleChrome、ChromeOS、Android、MozillaFirefox、FirefoxOS等多種產(chǎn)品的圖形引擎,支持平臺,包括Windows、macOS、iOS、Android、Ubuntu等。-Dart部分主要包括:Dartruntime、GarbageCollection(GC),如果是Debug模式,也包括JIT(Justime)支持。在Release和Profile模式下,是AOTime編譯成原生的arm代碼,不存在于Debug模式,也不存在于后端。

    Embedder

    Embedder是通過這個層將Flutter嵌入到各個平臺中的嵌入層,Embedder的主要工作包括渲染Surface設置、線程設置、插件等。該平臺(例如iOS)只提供一個畫布,其余的所有渲染相關邏輯都在Flutter中,從而使其具有良好的跨端一致性。

    總結(jié)

    Flutter框架本身有很好的分層設計。本節(jié)旨在讓讀者對Flutter的整體框架有一個大致的印象。相信到目前為止,讀者已經(jīng)對Flutter有了初步的印象。在我們正式開始之前,我們還需要了解Flutter的開發(fā)語言。

   如何學習Flutter?

    本節(jié)給你一些學習建議,分享作者在學習Flutter方面的一些經(jīng)驗,希望能幫你提高學習效率,避免不必要的坑。

    資源

    網(wǎng)站:閱讀Flutter網(wǎng)站的資源是快速入門的最佳方式,同時網(wǎng)站也是了解Flutter最新發(fā)展動態(tài)的地方,由于Flutter目前仍處于快速發(fā)展階段,因此建議讀者還是不時地到網(wǎng)站查看是否有新動態(tài)。

    源代碼和注釋:源代碼注釋應該是學習Flutter的第一文檔。FlutterSDK的源代碼是開源的,注釋非常詳細。有很多例子。其實Flutter官方SDK文檔是通過注釋生成的。源代碼和注釋可以幫你解決大部分問題。

    Github:如果遇到的問題在StackOverflow上找不到答案,可以去githubflutter項目提issue。

    Gallery源代碼:Gallery是Flutter官方示例APP,有豐富的示例,讀者可以在線下載安裝。Gallery的源代碼在Flutter源代碼examples目錄下。

    社區(qū)

    StackOverflowkOverflow,那么StackOverflow就是目前世界上最大的程序員問答社區(qū),而且現(xiàn)在也是Flutter問答社區(qū)。除了Flutter用戶在StackOverflow上的交流外,F(xiàn)lutter開發(fā)團隊的成員也經(jīng)常在上面回答問題。

    博客:隨著Flutter技術(shù)的普及,相信網(wǎng)上有很多與Flutter相關的文章和博客,讀者可以閱讀很多。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多