Flutter Dojo的設計之道

xuyisheng發表於2020-07-27

認識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。

專案地址:

github.com/xuyisheng/f…

歡迎大家前來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的設計之道

出竅

有了具體的設計思路後,我就開始構思如何來實現了,Flutter Dojo,首先是一個Demo,即演示類的App,所以,它一定是重在程式碼,但卻可以通過Demo的分解,將功能演示出來,其次,雖然說是Demo,但絕不是一個粗製濫造的UI,長得好看,才叫Flutter Dojo,長的醜,只能叫Flutter Demo。所以,最後的設計風格調整了好幾次,最終定稿如下。

Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道

這四個部分,是Flutter Dojo的核心功能,分別對應了上面提到的四個部分。

Widgets

Widgets部分的設計完全按照官方的Flutter Widget Category來進行分類。

Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道

一級分類和二級分類,分類整理了官方的所有Widget和簡介。

當然,核心是每個Widget的使用場景的展示。

Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道

這裡只展示了幾個Widget的演示介面,更多的Widget,請自行使用。

UI Pattern

UI Pattern的分類,我是按照元件的功能進行劃分的。

Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道

Animations

Animations的分類同樣是根據動畫構建型別來進行分類的。

Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道

Back-end Util

Flutter雖然說是一個UI跨平臺框架,但是其征途依然是星辰大海,所以即使是非UI的東西,Flutter依然會包含,所以,這部分就展示的是各種非UI的Flutter開發技術點。

Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道

有了這四部分的加持,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版本新增了搜尋、檢視原始碼以及分享功能。

Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道

搜尋功能非常強大,支援模糊匹配、前字尾匹配,效率高、速度快。

檢視原始碼功能,使用Markdown解析原始碼,可以直接在App中檢視程式碼。

分享功能可直接將原始碼分享出去,實現copy anywhere。

至此,Flutter Dojo 2.0 釋出。

合體

Flutter Dojo經過兩個版本的迭代,不僅僅在功能上更加完善了,分類和Demo的拆解也更加優秀了,所以,在Flutter Dojo 3.0上,我增加了一些資訊流的設計,讓開發者在學習這些現有知識的基礎上,能夠更加好的接觸到一些更新的Flutter文章,所以,這裡我設計了一個Feed功能,將掘金上的Flutter Tag下的文章聚合到Flutter Dojo中。

Flutter Dojo的設計之道 Flutter Dojo的設計之道

至此,Flutter Dojo 3.0 釋出。

渡劫

本篇是Flutter Dojo解析文章的總綱,後面會有一系列文章來進行分析Flutter Dojo中那些不為人知的祕密。

飛昇

Flutter Dojo具體該怎麼使用呢?首先,大家可以在GitHub下載最新的Flutter Dojo Apk

Github Actions APK download

或者在【百度應用市場】【小米應用市場】搜尋【Flutter dojo】下載最新的Apk檔案安裝。

先熟悉整體結構,在空閒時間,對感興趣的Demo進行學習,遇到難點,可以通過App內建的檢視程式碼功能檢視具體程式碼,或者通過分析功能將程式碼copy出來分析。

當你覺得整體差不多後,可以將整個工程clone下來,針對程式碼和工程做進一步的學習。

修仙

Flutter Dojo開源至今,受到了很多Flutter學習者和愛好者的喜愛,也有越來越多的人加入到Flutter的學習中來,所以我建了個Flutter修仙群,但是人數太多,所以分成了【Flutter修仙指南】【Flutter修仙指北】兩個群,對Flutter感興趣的朋友,可以新增我的微信,註明加入Flutter修仙群,或者直接關注我的微信公眾號【Android群英傳】。

Flutter Dojo的設計之道 Flutter Dojo的設計之道 Flutter Dojo的設計之道

當然,開源不易,國際慣例。

Flutter Dojo的設計之道 Flutter Dojo的設計之道

專案地址:

github.com/xuyisheng/f…

歡迎大家前來star,讓更多的開發者享受到Flutter的開發樂趣。

相關文章