Android 程序員入坑 Flutter

一、前言

閑來無事,花了兩個多星期入了Flutter的坑,這篇文章總結了一下這段時間學到的東西以及學習過程中看過的資料,也是想借此機會,看看自己有哪些遺漏的地方,感謝網上的各位大神。

之后也會根據總結好的知識體系,寫一些自己的文章。

二、準備工作

2.1 Dart 語言

學習下來,Dart語言很多地方和Java都很類似,對于Android程序員來說沒有什么難度。我學習的時候主要關注的幾點:

  • 變量定義
  • 函數定義(可選參數是最常用的點)。
  • 類(構造函數定義的一些變種)
  • 一些Java中沒有遇到的操作符,例如?.expr1 ?? expr2b ??=1
  • ListMap等數據結構的定義方式。
  • 單例的實現方式。
  • mixin的概念。
  • Dart語言中的語法糖

推薦文章

2.2 找一篇完整的教程

找到一篇完整的教程,從頭到尾的跟著學習一遍,不要看獨立的博客,有助于對整個Flutter涉及的方面有一個整體的認識

在學習完之后,再去針對有疑問的點去針對性地學習。我是跟著下面這篇教程學下來的,受益匪淺,感謝!

推薦文章

三、知識點拆解

經過了上面兩步準備工作,就開始對知識點進行拆解,找一個筆記軟件,按照拆解的分類,無論是別人寫的,還是自己總結的,都要形成“知識組塊”填入到腦海中,才不容易遺忘。

3.1 Widget

Widget的學習為兩個方面:

  • 第一步:控件使用方式的學習,大家可以找一些在項目中做過的比較復雜的界面,試著用 Flutter的方式寫一遍,flutter-go 展示了經常會用到的控件,用到控件的時候去看它是怎么實現的。
  • 第二步:除了會用之外,還要去了解一些Widget相關的概念,這里面比較核心的有:
    • StatelessWidget vs StatefullWidget
    • StatefullWidgetState的生命周期
    • BoxConstraints
    • BuildContext
    • WidgetElementRenderObject三者的關系

推薦文章

3.2 資源處理 & 屏幕適配

  • 如何聲明并使用Flutter APK中的文件、圖片、字體,以及圖片放在不同文件夾下加載后所占的寬高。
  • 屏幕適配。

參考資料

3.3 動畫

動畫的話簡單的看 Flutter 實戰 中這部分的代碼就行了,主要了解動畫組成,掌握:

  • 單個、組合動畫。
  • 頁面跳轉動畫。
  • 共享元素動畫。

推薦文章

3.4 自定義組件

自定義組件有以下三種方式:

  • 組合現有的Widget:這種方式比較簡單,組合即可,用于封裝項目中一些通用的布局。
  • 自定義Widget:通過CustomPaintCustomPainter,類似于在Android當中重寫View.draw(Canvas canvas),使用CanvasPaintAPI在畫布上繪制,當項目中一些圖形比較復雜的時候會用到它。
  • 自定義布局:自定義RenderBoxMultiChildRenderObjectWidget的子類,用于子Widget的排列規則比較復雜的情況,例如Flow/Wrap這樣的流式布局。

推薦文章

3.5 手勢處理

  • Listener:難點在于HitTestBehavior的場景。
  • IgnorePointerAbsorbPointer:忽略PointEvent
  • GestureDector的回調方法。
  • GestureRecognizer的使用
  • 手勢的競爭和沖突
  • 手勢事件流的源碼分析

推薦文章

3.6 異步操作

Android里面,異步操作的工具五花八門,AsyncTaskHandlerThread,但是在Flutter里面,一個async/await就解決問題了,主要掌握下面幾點:

  • Flutter的事件模型,isolate的概念。
  • Future的概念。
  • async/await的使用方式,以及他們在事件循環中運行的時間點。
  • isolate之間如何通信。
  • RxDart的用法,這個和RxJava很類似,如果之前學過的應該很容易能夠掌握。

推薦文章

3.7 路由

掌握頁面間跳轉和傳遞參數的方式。

推薦文章

Flutter 實戰之路由管理

3.8 數據操作

數據操作分為以下幾類,都有開源的包可以使用,查看說明文檔即可。

3.9 Flutter 與 Native 的通信

  • FlutterNative之間如何進行數據和方法的傳遞。
  • 如何在Flutter中嵌入Android View

參考文章

3.10 狀態管理

mclzone 寫的一系列關于狀態管理的文章很棒!看完之后就明白了,沒有再看過其它的文章。

推薦文章

3.11 國際化

國際化的掌握分為三步:

推薦文章

3.12 進階

(1) 編譯 & 打包原理

(2) 初始化流程

(3) 繪制框架分析

ad6623 - 掘金 寫的下面這系列關于渲染流水線的文章很棒,我每篇都邊看邊畫流程圖跟著學了下來,雖然很痛苦,但是收貨很大,感謝!

(4) 繪制框架的一些補充文章

(5) Dart

3.13 看一下實際的 App 是如何實現的

3.14 性能優化

剛入門,還沒到性能優化的地步,還需繼續努力。= =

3.15 打包 & 發布

四、小結

當然,這只是一篇入門的教程,離工程化的標準還很遠,這種只能到項目中實踐了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,345評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,494評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,283評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,953評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,714評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,410評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,940評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,776評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,210評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,654評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容