Flutter 到底能不能成為“跨平臺開發終極之選”?

思思不打王者發表於2021-05-12

提筆緣由

跨端技術是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 並快速上手的朋友幫助以及一個參考方向。

相關文章