閒來無事,花了兩個多星期入了Flutter
的坑,這篇文章總結了一下這段時間學到的東西以及學習過程當中看過的資料,也是想借此機會,看看本身有哪些遺漏的地方,感謝網上的各位大神。html
以後也會根據總結好的知識體系,寫一些本身的文章。git
學習下來,Dart
語言不少地方和Java
都很相似,對於Android
程序員來講沒有什麼難度。我學習的時候主要關注的幾點:程序員
Java
中沒有遇到的操做符,例如?.
,expr1 ?? expr2
,b ??=1
。List
,Map
等數據結構的定義方式。mixin
的概念。Dart
語言中的語法糖推薦文章github
找到一篇完整的教程,從頭至尾的跟着學習一遍,不要看獨立的博客,有助於對整個Flutter
涉及的方面有一個總體的認識。數據庫
在學習完以後,再去針對有疑問的點去針對性地學習。我是跟着下面這篇教程學下來的,受益不淺,感謝!json
推薦文章canvas
通過了上面兩步準備工做,就開始對知識點進行拆解,找一個筆記軟件,按照拆解的分類,不管是別人寫的,仍是本身總結的,都要造成「知識組塊」填入到腦海中,纔不容易遺忘。segmentfault
Widget
的學習爲兩個方面:性能優化
Flutter
的方式寫一遍,flutter-go 展現了常常會用到的控件,用到控件的時候去看它是怎麼實現的。Widget
相關的概念,這裏面比較核心的有:
StatelessWidget
vs StatefullWidget
StatefullWidget
中State
的生命週期BoxConstraints
BuildContext
Widget
、Element
、RenderObject
三者的關係推薦文章網絡
Flutter
官方的,簡短地介紹了一些頗有用的控件及其應用場景。Flutter APK
中的文件、圖片、字體,以及圖片放在不一樣文件夾下加載後所佔的寬高。參考資料
動畫的話簡單的看 Flutter 實戰 中這部分的代碼就好了,主要了解動畫組成,掌握:
推薦文章
自定義組件有如下三種方式:
Widget
:這種方式比較簡單,組合便可,用於封裝項目中一些通用的佈局。Widget
:經過CustomPaint
和CustomPainter
,相似於在Android
當中重寫View.draw(Canvas canvas)
,使用Canvas
和Paint
的API
在畫布上繪製,當項目中一些圖形比較複雜的時候會用到它。RenderBox
和MultiChildRenderObjectWidget
的子類,用於子Widget
的排列規則比較複雜的狀況,例如Flow/Wrap
這樣的流式佈局。推薦文章
Listener
:難點在於HitTestBehavior
的場景。IgnorePointer
和AbsorbPointer
:忽略PointEvent
。GestureDector
的回調方法。GestureRecognizer
的使用推薦文章
在Android
裏面,異步操做的工具五花八門,AsyncTask
、HandlerThread
,可是在Flutter
裏面,一個async/await
就解決問題了,主要掌握下面幾點:
Flutter
的事件模型,isolate
的概念。Future
的概念。async/await
的使用方式,以及他們在事件循環中運行的時間點。isolate
之間如何通訊。RxDart
的用法,這個和RxJava
很相似,若是以前學過的應該很容易可以掌握。推薦文章
掌握頁面間跳轉和傳遞參數的方式。
推薦文章
數據操做分爲如下幾類,都有開源的包可使用,查看說明文檔便可。
SharePreference
,shared_preferencesJSON
轉換成實體類的問題, json_serializable。Flutter
和Native
之間如何進行數據和方法的傳遞。Flutter
中嵌入Android View
。參考文章
mclzone 寫的一系列關於狀態管理的文章很棒!看完以後就明白了,沒有再看過其它的文章。
推薦文章
國際化的掌握分爲三步:
推薦文章
ad6623 - 掘金 寫的下面這系列關於渲染流水線的文章很棒,我每篇都邊看邊畫流程圖跟着學了下來,雖然很痛苦,可是收貨很大,感謝!
剛入門,還沒到性能優化的地步,還需繼續努力。= =
固然,這只是一篇入門的教程,離工程化的標準還很遠,這種只能到項目中實踐了。