作者簡介
本人,廣工小成,全棧開發,專心學習了flutter開發一段週期。由0到1開發出了一個多功能,有完整的flutter聊天系統,好友系統,以及flutter嵌入國內百度地圖並且進行靈活排程的完整應用。
這裡推薦一下本人的學習網址:
當然,本人還閱讀過很多部落格,以及慕課網的教學視訊,都積累了不少東西,不過最主要的還是推薦一下flutter官網。在開發過程中,網上的部落格說的都很少,最後還是得靠官網。
flutter介紹
話不多說,文章是面對flutter小白進行開始。先個人的瞭解對flutter進行一個介紹吧
Flutter是Google開源的一個移動應用開發框架,擁有豐富的元件和介面,幾乎能夠滿足對一款軟體的所有要求,用dart語言開發。
Dart語言的歷史的話,說來就話長了,簡單引用flutter實戰作者的話語吧。
開發效率高
Dart執行時和編譯器支援Flutter的兩個關鍵特性的組合:
基於JIT的快速開發週期:Flutter在開發階段採用,採用JIT模式,這樣就避免了每次改動都要進行編譯,極大的節省了開發時間;
基於AOT的釋出包: Flutter在釋出時可以通過AOT生成高效的ARM程式碼以保證應用效能。而JavaScript則不具有這個能力。
高效能
Flutter旨在提供流暢、高保真的的UI體驗。為了實現這一點,Flutter中需要能夠在每個動畫幀中執行大量的程式碼。這意味著需要一種既能提供高效能的語言,而不會出現會丟幀的週期性暫停,而Dart支援AOT,在這一點上可以做的比JavaScript更好。
快速記憶體分配
Flutter框架使用函式式流,這使得它在很大程度上依賴於底層的記憶體分配器。因此,擁有一個能夠有效地處理瑣碎任務的記憶體分配器將顯得十分重要,在缺乏此功能的語言中,Flutter將無法有效地工作。當然Chrome V8的JavaScript引擎在記憶體分配上也已經做的很好,事實上Dart開發團隊的很多成員都是來自Chrome團隊的,所以在記憶體分配上Dart並不能作為超越JavaScript的優勢,而對於Flutter來說,它需要這樣的特性,而Dart也正好滿足而已。
型別安全
由於Dart是型別安全的語言,支援靜態型別檢測,所以可以在編譯前發現一些型別的錯誤,並排除潛在問題,這一點對於前端開發者來說可能會更具有吸引力。與之不同的,JavaScript是一個弱型別語言,也因此前端社群出現了很多給JavaScript程式碼新增靜態型別檢測的擴充套件語言和工具,如:微軟的TypeScript以及Facebook的Flow。相比之下,Dart本身就支援靜態型別,這是它的一個重要優勢。
為何要用Flutter
- flutter用一套程式碼,即可跨安卓和ios平臺開發
- 相對於安卓和ios平臺獨立開發,flutter的程式碼量甚至更少,執行速度更快
- flutter開發的時候,提供完整介面,而且呼叫非常簡單
- 更加優美,flutter有完美的動畫效果,以及可以在2dimensions網站指定優雅的動畫效果自定義
- flutter類似react框架,有自己的diff演算法,實現元件複用。同時提供了相應的開發者工具,讓我們設計,構建,測試以及debug更加方便
Flutter的元件化
Flutter的元件分為兩大塊:StatelessWidget和StatefulWidget
看名字就能夠知道StatelessWidget為靜態元件,不需要動態載入,一般用來作為專案當中沒有網路互動的元件,而StatefulWidget為動態元件,根據使用者的互動,以及網路對其狀態改變來改變其顯示。Flutter為典型的mvvm框架。
Flutter的架構
flutter的架構不仔細展開來講了,因為如果瞭解到這裡面的知識了,相比也是很有經驗的人了。這裡就簡單說一下,如下圖,flutter是在平臺的硬體介面上的c++上面的一層,跟js有點類似,不過flutter更類似js搭建的react框架。
總結
這裡就只是簡單的介紹了一下Flutter,不得不說,Flutter確實是一個很厲害的框架,就是可惜國內的人用的還不夠多,但是值得追捧,如果你也閱讀了Flutter官網上那些優秀的頁面,不要懷疑,Flutter開發就是這麼簡潔而優雅。