認識Flutter是在18年,移動端開發日趨成熟的情況下,很多開發者都在尋求跨平臺開發的終極法門,在經過了webview、RN的痛苦之後,Flutter的出現,給跨平臺開發帶來了一線曙光。自此,便開始了Flutter的學習之路,佈道師之路,修仙之路。
築基
Flutter的學習曲線很奇怪,像坐雲霄飛車一樣,初學很簡單,上手幾天,很快就能寫一些基本的介面,但是很快就遇到了瓶頸,因為官方的Widget越來越多,越來越複雜,學了忘,忘了學,有些人突破了,成為了一代先驅,有些人則被搞的一團霧水,大罵一聲,垃圾Flutter,毀我青春。
相信大部分上手的開發者,都會抱怨兩個問題,一是Widget太多,二是巢狀太多。巢狀太多的問題,沒什麼好解釋的,大部分有這種抱怨的人,都是因為不知道如何正確的使用茫茫多的Widget而惱羞成怒的。
對於UI介面來說,樹形結構是表現UI最好的方式,當然可以通過很多其它的方式來減少巢狀,但simple is fast,Android xml佈局中,巢狀近十層的佈局比比皆是,這對於寫UI來說,並不會造成什麼困擾。
但是Widget太多,確實是一個比較麻煩的問題,這裡的學習什麼考驗開發者的學習能力,Flutter雖然在設計Widget方面略顯隨意,但是官方所給出的Widget,幾乎都是比較實用的,覆蓋了開發的方方面面,只用常用的那些Widget,確實也可以完成大部分UI的開發,但是,掌握更多的官方Widget,會讓你的開發更加方便。
我在學習的過程中,自然也遇到了這些問題,經過一年多的沉澱,逐漸對整個架構有了一些認識,所以也萌生了一些想法,想通過一個Flutter App,來幫助初學者、進階者快速掌握Flutter,這才有了Flutter Dojo的雛形。
Dojo,源自日語「道場」。我希望的是通過Flutter Dojo讓初學者快速掌握官方Widget的常用使用方法,讓進階者掌握Flutter開發元件、封裝元件的基本思路,讓學有小成者更加高效、更加快速的進行Flutter開發。
所以,我在最開始的時候,將Flutter Dojo分為了下面幾個部分:
- Widgets
- UI Pattern
- Animations
- Back-end Util
Flutter Dojo的設計主要圍繞下面三個部分展開:
- 良好的演示效果
- 簡單明瞭的程式碼
- 好看的介面設計
整個專案的程式碼都以上面幾點作為目標,程式碼力圖簡潔,不使用複雜的架構設計和抽象,每一部分的演示程式碼幾乎都可以單獨使用,同時儘可能的美化UI。
專案地址:
歡迎大家前來star,讓更多的開發者享受到Flutter的開發樂趣。
Widgets
Widgets部分的設計思路是為了演示Flutter中茫茫多的Widget的具體使用場景和功能,雖然只使用Flutter提供的一些基本Widget,已經可以實現大部分的介面、功能開發,但是,瞭解更多的Widget,可以讓開發者的開發思路更廣,使用更加合適的Widget來完成合適的開發場景。
經過迭代,Widgets部分已經完善了官方的所有Widget,以及官方在Category中未列舉但是有很大實用價值的Widget。
UI Pattern
UI Pattern部分的設計思路是為了幫助開發者瞭解如何使用Flutter來拆分大部分APP中的介面模板,通過Flutter實現一個個UI元件,來組合成完整的Flutter介面。
通過UI Pattern的學習,可以讓開發者瞭解Flutter的具體解題思路,如何拆分UI的實現套路。
Animations
Animations部分的設計思路是為了讓開發者對Flutter的動畫有一個完整的認識,針對不同的場景使用不同的動畫方案,同時,對大部分常見的動畫場景進行梳理,完成動畫場景的歸類。
Back-end Util
Back-end Util這部分主要是針對Flutter中的非UI場景知識點進行的梳理,包括資料持久化、解析、狀態管理等等。
最初的這一版,在GitHub的私有倉庫迭代了將近一年,才終於基本定型Release出來。
出竅
有了具體的設計思路後,我就開始構思如何來實現了,Flutter Dojo,首先是一個Demo,即演示類的App,所以,它一定是重在程式碼,但卻可以通過Demo的分解,將功能演示出來,其次,雖然說是Demo,但絕不是一個粗製濫造的UI,長得好看,才叫Flutter Dojo,長的醜,只能叫Flutter Demo。所以,最後的設計風格調整了好幾次,最終定稿如下。
這四個部分,是Flutter Dojo的核心功能,分別對應了上面提到的四個部分。
Widgets
Widgets部分的設計完全按照官方的Flutter Widget Category來進行分類。
一級分類和二級分類,分類整理了官方的所有Widget和簡介。
當然,核心是每個Widget的使用場景的展示。
這裡只展示了幾個Widget的演示介面,更多的Widget,請自行使用。
UI Pattern
UI Pattern的分類,我是按照元件的功能進行劃分的。
Animations
Animations的分類同樣是根據動畫構建型別來進行分類的。
Back-end Util
Flutter雖然說是一個UI跨平臺框架,但是其征途依然是星辰大海,所以即使是非UI的東西,Flutter依然會包含,所以,這部分就展示的是各種非UI的Flutter開發技術點。
有了這四部分的加持,Flutter Dojo的核心功能就算是完備了,當然,這裡面的分類和Demo依然在不停的更新中,所以,Flutter Dojo只會越來越完善,不過萬變不離其宗,其設計思想依然是圍繞著這四個方面展開的。
至此,Flutter Dojo 1.0 釋出。
分神
在設計完這四個核心的方向之後,我開始自己使用Flutter Dojo來鞏固Flutter的學習,在使用過程中,逐漸發現了一些不足,比如在使用App的時候,不能檢視程式碼,雖然場景設計的是通過介面來掌握Flutter Widget的學習,但是,並不是所有的場景都能完美的讓你學到這個Widget的使用精髓,所以,在App端檢視程式碼是一個剛需,在學習場景的時候,遇到不懂的地方,可以直接通過檢視程式碼來了解具體的使用原理。
其次,Flutter Dojo的程式碼設計為copy anywhere的,Demo中的程式碼,幾乎全部是可以完全複製使用的,這也是為了初學者考慮,整個程式碼不包含複用、繼承等架構設計,開發者通過單個的Demo示例就可以完全掌握,而不是要先了解其它基類、抽象的實現等等,所以要實現程式碼的輕鬆copy功能。
另外,由於Widget和Pattern分類越來越多,檢視起來經常會忘記分類的具體位置,所以,搜尋功能也是亟需新增的。
因此,在Flutter Dojo 1.0的基礎之上,2.0版本新增了搜尋、檢視原始碼以及分享功能。
搜尋功能非常強大,支援模糊匹配、前字尾匹配,效率高、速度快。
檢視原始碼功能,使用Markdown解析原始碼,可以直接在App中檢視程式碼。
分享功能可直接將原始碼分享出去,實現copy anywhere。
至此,Flutter Dojo 2.0 釋出。
合體
Flutter Dojo經過兩個版本的迭代,不僅僅在功能上更加完善了,分類和Demo的拆解也更加優秀了,所以,在Flutter Dojo 3.0上,我增加了一些資訊流的設計,讓開發者在學習這些現有知識的基礎上,能夠更加好的接觸到一些更新的Flutter文章,所以,這裡我設計了一個Feed功能,將掘金上的Flutter Tag下的文章聚合到Flutter Dojo中。
至此,Flutter Dojo 3.0 釋出。
渡劫
本篇是Flutter Dojo解析文章的總綱,後面會有一系列文章來進行分析Flutter Dojo中那些不為人知的祕密。
飛昇
Flutter Dojo具體該怎麼使用呢?首先,大家可以在GitHub下載最新的Flutter Dojo Apk
或者在【百度應用市場】【小米應用市場】搜尋【Flutter dojo】下載最新的Apk檔案安裝。
先熟悉整體結構,在空閒時間,對感興趣的Demo進行學習,遇到難點,可以通過App內建的檢視程式碼功能檢視具體程式碼,或者通過分析功能將程式碼copy出來分析。
當你覺得整體差不多後,可以將整個工程clone下來,針對程式碼和工程做進一步的學習。
修仙
Flutter Dojo開源至今,受到了很多Flutter學習者和愛好者的喜愛,也有越來越多的人加入到Flutter的學習中來,所以我建了個Flutter修仙群,但是人數太多,所以分成了【Flutter修仙指南】【Flutter修仙指北】兩個群,對Flutter感興趣的朋友,可以新增我的微信,註明加入Flutter修仙群,或者直接關注我的微信公眾號【Android群英傳】。
當然,開源不易,國際慣例。
專案地址:
歡迎大家前來star,讓更多的開發者享受到Flutter的開發樂趣。