Flutter 終于正式來啦,現在都到 1.2 版了,雖然現在仍然有很多坑,很多問題,在 android 中嵌入 Flutter 還是不夠好,但是我們學習 Flutter 的卻是時候了,不說你在公司 android 項目里有多少應用,Flutter 的學習總是有必要的,先了解,熟悉,在可以的時候直接上了,Flutter 的未來不用擔心,你知道 Flutter 妥妥的就是未來就行了
這里我整理下找到的資料,放上些自己的理解,方便大家的學習,也方便自己查閱
Flutter 的原理很簡單,?創建一張畫布,并在這張畫布上渲染界面。同時,監聽原生事件,在 Dart 層響應所有觸摸事件。這和跨平臺游戲引擎的原理是一致的。抽象出統一的界面、觸摸、交互語言,然后使用一致的渲染引擎呈現最終產物
官方網站:
學習網站:
簡友教程:
蓋世英雄_64c4 | Q吹個大氣球Q | iwakevin
走路不穿鞋oO | TYL_CQ | 閑魚技術 | 謝棟_ | guaju
阿策神奇 | 開心人 | 乘香墨影 | 戀貓月亮 | Yuzo
Dart 教程
Flutter 特性了解
Flutter 環境配置、軟件安裝、首次運行
視頻教程
實戰項目
-
Flutter 天氣 app
-
上拉下拉
-
阿里 Flutter-go
-
Flutter豆瓣客戶端
-
Panda看書
Flutter 和 Android 相互集成
其他學習資源
Flutter 開發思路
-
Flutter 嵌入 android 插件
Flutter 是 UI 層級的跨平臺,對于很多功能來說,不同平臺有各自不同的實現,Flutter 層就無能為力了,這時可以在比如 android 平臺編寫一個 Plugin 插件,然后 Flutter 依賴這個平臺 native 實現的庫,通過 MethodChannel 實現通信,具體請看: -
優先加載渲染耗時的 Flutter 首幀
FlutterView的首幀渲染耗時較高,在Debug版本有明顯感受,大概會黑屏2秒,release版本會好很多。但我們觀察Cpu曲線,發現還是一個較為耗時的過程。有一種體驗優化的思路是,我們可以預先讓將要使用的 FlutterView 加載好首幀,這樣,在真正使用的時候就很快了,可以先建立一個只有1個像素的窗口,在這個窗口里面完成FlutterView首幀渲染,代碼如下:
Flutter 跨平臺開發
Flutter 目前的問題
Flutter 目前對于我們來說還是太新了,至少缺乏全面的第三發庫和服務支持就是個死穴,目前適合研究,上手,商業應用需謹慎
- 摘自: Flutter技術調研報告
- Dart 語言,作為一門全新的語言上手成本比較高,對于移動端開發人員,語言以及框架都是全新的,整個技術棧的積累也都得從頭開始
- 編譯后的包體積較大
- 欠缺第三方庫,需要自己造輪子
- 默認只支持 arm-v7a CPU 架構,后期應該可以修改編譯配置解決此問題
- 多個 Feature 同時請求時,可能有的收不到回調,這個可能是Dart的消息機制有關,需要進一步研究,非必現
- WebView的支持很弱
- 音視頻的支持很弱
- API 類似 Android ,對 iOS 開發者上手可能不是非常友好
- 圖片資源的多倍率適配問題,必須提供一倍圖,會增大應用體積
- Fluter UI實現嵌套層次太多,可閱讀程度不高(很低 )
- 境外環境依賴(有國內鏡像),新建項目 dart package get 不穩定
- Flutter 的設計圖標準,比如像素值,和 Android 和 ios 的設計標準有區別
- 圖片和文字混排,實現比較麻煩
- ListView 的視圖復用機制,需要調研,感覺 View 多了會有點卡頓
- 網絡圖片的緩存機制,需要調研,目前Image所以支持網絡圖片,但是關于它的緩存,還不清楚
Flutter Weight UI 組件表
- StatelessWidget - 無狀態組件
- StatefulWidget - 有狀態組件
- Image - 圖片
- Icon - 圖標
- Text - 文字
- Container - 容器組件,內置Padding、寬高、背景、邊框等細節操作
- Center - 居中顯示Layout
- Column - 縱向排列Layout
- Row - 橫向排列Layout
- Wrap - 橫向排列Layout,自動換行
- CustomScrollView - 支持嵌套滾動子控件的滾動視圖
- SliverToBoxAdapter - 包裝普通控件,適配CustomScrollView
- ListView - 單一的List組件,不支持PullRefresh
- GideView - 網格組件
- Divider - 分割線組件