提筆緣由
跨端技術是Android程式設計師乃至所有移動開發程式設計師一直在研究的課題。
3月4日,谷歌正式釋出了 Flutter 的 2.0。該版本最大的特性就是可以支援五大主流的作業系統:iOS、Android、Linux、Windows 和 MacOS。官方甚至還說豐田將會把 Flutter 帶到汽車中。
也就是說,我們可以用一套 Flutter 程式碼適配全平臺了。
同時間,開發社群討論炸開了鍋:Flutter 到底能不能成為“跨平臺開發終極之選”?Flutter不是正在被放棄嗎?
我相信很多人心中都有上面這些疑惑,今天我們就來好好掰扯一下這個Flutter。
Flutter 到底能不能成為“跨平臺開發終極之選”?
很多Android開發不願學 Flutter
通過和大家溝通我發現,其實很多接觸 Flutter 的人都是“被迫”的,原因有很多:
- 老師要求的
- 領導要求的
- 老闆要求的
一言闢之:別人喊我學的。因為感興趣和愛好而去主動鑽研的人不算多,這與 Flutter 本身的特性有關:
- Flutter 是基於前端誕生的,但是對前端開發來說,Flutter 的環境配置很麻煩,需要原生的平臺知識,還要擔心遇上網路問題。
- Flutter 本身沒有特別多的語法糖。
- Flutter 最先運用在移動客戶端的開發,但是程式設計模式,語法都偏向前端,宣告式的開發方式對客戶端原生開發者來說需要額外的學習成本。
- Flutter 的巢狀讓人舉覺得很“噁心”。
綜上,Flutter 在很多開發者心中並不是很討喜,但是我還是想說,Flutter 他值得!
為什麼 Flutter 對Android開發來說值得?
1.Flutter 有很多優點
(1)國際化方案非常友好
Flutter官方提供的國際化方案對佈局的國際化做的非常友好,文案的國際化在Flutter Intl外掛的加持下也非常簡單。(或許微不足道,但是真的超級方便)
(2)執行效率高
就目前市場的大環境來講,主流的跨端方案有兩種:
- 將 JavaScriptCore 引擎當作虛擬機器的方案,代表框架是 React Native;
- 使用非 JavaScriptCore 虛擬機器的方案,代表框架就是我們今天的主角 Flutter。
JavaScriptCore, 主要是為了相容 Web 標準留下的歷史包袱,無法專門針對移動端進行效能優化。而 Flutter 一開始就是使用全新的 Dart 語言編寫,同時支援 AOT 和 JIT 兩種編譯方式,而沒有采用 HTML/CSS/JavaScript 組合方式開發,在執行效率上明顯高於 JavaScriptCore 。
2.Flutter 是市場的選擇
如下圖,這是手機上用 libChecker 統計出來的部分使用 Flutter 的應用:
我們可以看到,現在 Flutter 正在被很多大公司採用:
- 京東的京東讀書
- 阿里的閒魚
- 騰訊的微信和 Now 直播
- 位元組跳動的西瓜視訊
- ……
一個新技術的普及,企業級應用一定會先在頭部網際網路企業產生,然後逐步優化降低門檻。現在用 Flutter 的大廠是越來越多,相信那個爆發的臨界點應該不遠了。
Flutter 現在已經不是曾經的小眾框架,這兩年裡它已經逐步成長為主流的跨平臺開發框架之一。
3.找工作的加分項
Flutter目前也是Android開發崗位的加分項,下面是我在Boss上面搜到的一部分招聘資訊。
通過上圖我們可以看出,很多大廠在高薪招聘這方面的人才,Flutter 確確實實可以成為我們找工作的一個幫助。
Flutter 也確確實實可以幫助到我們的職業發展。技術是相通的,當我們在學習Flutter時,也能把原有的技術聯通、打通,我們可以通過 Flutter 放大自身業務開發能力,參與到更多的平臺開發中。
有一個說法是:對於 Android 原生開發來說,學會 Flutter 等於學會了 70% 以上的 Jetpack Compose 。
Android開發該如何快速上手Flutter?
當你快速搭建好環境,簡單瞭解 Flutter 的 API 之後,你的 Flutter 學習之路需要面對的主要有兩個核心點:一個是響應式開發,另一個是弄懂 Widget 的背後是什麼?
這兩點對我們Android開發來說都有一定的難度。
為了讓大家快速無痛上手 Flutter,在這裡免費分享給大家一份來自阿里大佬Git高星的 Flutter 學習筆記。
整理大綱
- 為什麼Flutter是跨平臺開發的終極之選
- 在Windows上搭建Flutter開發環境
- 編寫您的第一個 Flutter App
- Flutter開發環境搭建和除錯
- Dart語法篇之基礎語法(一)
- Dart語法篇之集合的使用與原始碼解析(二)
- Dart語法篇之集合操作符函式與原始碼分析(三)
- Dart語法篇之函式的使用(四)
- Dart語法篇之物件導向基礎(五)
- Dart語法篇之物件導向繼承和Mixins(六)
- Dart語法篇之型別系統與泛型(七)
- Flutter中的widget
資料詳情
為什麼Flutter是跨平臺開發的終極之選
- 這是為什麼?
- 跨平臺開發
- 什麼是 Flutter
- Flutter 的特性
- Flutter 構建應用的工具
- 使用 Flutter 構建的熱門應用
- 構建 Flutter 應用的成本
- ……
在Windows上搭建Flutter開發環境
- 使用映象
- 系統要求
- 獲取Flutter SDK
- 編輯器設定
- Android設定
- 起步: 配置編輯器
- 起步: 體驗
- 體驗熱過載
- 建立新的應用
- 執行應用程式
- ……
第三章 編寫您的第一個 Flutter App
- 第1步: 建立 Flutter app
- 第2步: 使用外部包(package)
- 第3步: 新增一個 有狀態的部件(Stateful widget)
- 第4步: 建立一個無限滾動ListView
- 第5步: 新增互動
- 第6步: 導航到新頁面
- 第7步:使用主題更改UI
- ……
第四章 Flutter開發環境搭建和除錯
- 開發環境的搭建
- 模擬器的安裝與除錯
- 開發環境的搭建
- 模擬器的安裝與除錯
- ……
第五章 Dart語法篇之基礎語法(一)
- Hello Dart
- 資料型別
- 變數和常量
- 集合(List、Set、Map)
- 流程控制
- 運算子
- 異常
- 函式
- ……
第六章 Dart語法篇之集合的使用與原始碼解析(二)
- List
- Set
- Map
- Queue
- LinkedList
- HashMap
- Map、HashMap、LinkedHashMap、SplayTreeMap區別
- 命名建構函式from和of的區別以及使用建議
- ……
第七章 Dart語法篇之集合操作符函式與原始碼分析(三)
- Iterable(Iterable類關係圖、Iterable類方法圖……)
- forEach(介紹、使用方式、原始碼解析……)
- map(介紹、使用方式、原始碼解析……)
- any(介紹、使用方式、原始碼解析……)
- every(介紹、使用方式、原始碼解析……)
- where(介紹、使用方式、原始碼解析……)
- firstWhere和singleWhere和lastWhere(介紹、使用方式、原始碼解析……)
- join(介紹、使用方式、原始碼解析……)
- take(介紹、使用方式、原始碼解析……)
- takeWhile(介紹、使用方式、原始碼解析……)
- ……(內容太多)
第八章 Dart語法篇之函式的使用(四)
- 函式引數
- 匿名函式(閉包,lambda)
- 箭頭函式
- 區域性函式
- 頂層函式和靜態函式
- main函式
- ……
第九章 Dart語法篇之物件導向基礎(五)
- 屬性訪問器(accessor)函式setter和getter
- 物件導向中的變數
- 建構函式
- 抽象方法、抽象類和介面
- 類函式
- ……
第十章 Dart語法篇之物件導向繼承和Mixins(六)
- 類的單繼承
- 基於Mixins的多繼承
- ……
第十一章 Dart語法篇之型別系統與泛型(七)
- 可選型別
- 介面型別
- 泛型
- 型別具體化
- ……
第十二章 Flutter中的widget
- Flutter頁面-基礎Widget
- Widget
- StatelessWidget
- Stateful Widget
- State生命週期
- 基礎widget
- 文字顯示
- ……
最後
希望這份資料可以給想要了解 Flutter 並快速上手的朋友幫助以及一個參考方向。