用 Flutter 開發一個 Android App 吧 - Day1

Build Android app with Flutter - Day1

Posted by Bobson Lin on Tuesday, September 10, 2019

Day 1. 前言、系列規劃

本系列同步發表在 第11屆鐵人賽

緣起

老實說在學習 Flutter 並用在幾個專案後,一直想花時間整理成文章在自己的部落格。
但是寫成筆記形式,怕過於潦草之後會看不懂;寫成教學文,要讓別人看得懂勢必要花很多的時間去撰寫,這計畫就一直擱置到現,。

不過最近正好有一小段空檔期,又剛好看到鐵人賽要開始了,想藉此機來整理吧~

移動端的開發

  • Android/iOS - Java & Kotlin/Objective-C & Swift
    • 優勢:
      • 用原生的語言開發,效能很好
      • 由於推出時間很久了,非常穩定以及能搜尋到的資源也很多
    • 劣勢:
      • 兩種平台須寫兩份不同語言的程式碼,開發及維護上需要較多人力資源
  • React Native(RN) - Javascript
    • 優勢:
      • 只須一種語言能編成兩種平台的 App
      • 用前端語言開發,對於前端開發者較好上手
      • 推出時間有五年了,整體框架算穩定以及社群也較多
    • 劣勢:
      • 需要先學習過 React 會比較好
  • Flutter - Dartlang
    • 優勢:
      • 只須一種語言能編成兩種平台的 App
      • Dartlang 為 Java-Like 的語言,學習過 Java 會滿好上手的
      • Dartlang 是需要編譯的,效能上比較好
    • 劣勢:
      • 推出時間短(到現在兩年半),目前版本迭代速度滿快的
  • NativeScript - Javascript
    • 優勢:
      • 只須一種語言能編成兩種平台的 App
      • 用前端語言開發,與幾個現在主流的前端框架(Angular、Vue.js)有作整合
    • 劣勢:
      • 近一年來好像才比較穩定(?)(至少我是最近才有看到它跟 Vue.js 整合)

備註:
* Flutter 2018 5月釋出 Beta 3,經過兩版 Preview,在 2018 12月推出 1.0.0。 * Flutter 2019 7月推出 1.7.8,目前已經過 3 個 stable 版本。Flutter SDK releases
* 我大概是 2018 5、6月時,在 Flutter 與 RN 兩個框架中作選擇,不過當初半路出家學習前端技術,較為熟悉的前端框架是 Vue.js,所以沒選擇 RN,而 NativeScript-Vue 還沒出現。 * 當初選擇 Flutter,另外一個原因是 Android 是由 Google 在撐的手機作業系統,所以覺得會進 Google Graveyard 機率應該不高才對 … ? * 其實還有很多其他的開發工具(框架),而選擇工具為個人因素決定,並無絕對的好壞,只要能達成目的,且自己用的上手最重要。(❤ ✌ ? Love & Peace)

Dart(Dartlang) 語言的學習

還未接觸 Flutter 前,我是完全沒聽過這語言。
而在決定要學習 Flutter 後,Dartlang 這門語言就一定得學習了。
因為我個人工作經驗是有接觸過 Java 與 Python,在加上有自學 JavaScript,在學習程式語言上其實有很多概念是相通的,所以學習 Dartlang 上並沒有太大的負擔。

我的學習來源是 YouTube 及 Dartlang 官方文件,個人也有整理幾篇 Dart 基礎系列文章在 個人部落格,還有發表在 掘金個人專欄 上,有興趣的人可作參考;另外 Women Who Code Taipei 分享在 YouTube 上的 Dart 基礎授課直播 也可以參考看看喔~

分享 Dartlang 教學不在這次鐵人賽的目標,所以我在這門語言上面就不多花筆墨了~

Flutter 的學習

其實到現在 Flutter 的學習資源已經滿多的了,官方文件 提供的內容滿值得細讀的,對了解框架上有一定程度的幫助。

另外 Flutter 官方維護的 YouTube 頻道 也有很多影片資源,尤其是其中的 The Boring Flutter Development Show 我從這上面學到很多東西(完全可以看出當開發者的辛酸 XD),也可看得出來這團隊的用心。

30 天規劃

  • [Day 1-2] 前言 & 簡單介紹
  • UI 部份 [10~15 篇]
  • API 串接 [5~10 篇]
  • Store(State) 狀態管理 [5~8篇]
  • [Day 31+] Enhancement & Others

原則上,我不會一一的讀官方文檔來介紹,而是直接以作一個專案或 開源項目(?) 的形式,看碰到什麼問題或需求,來帶出 Flutter 使用方式及解決方法。

如果有疑問、發現錯誤或語句不通順的部份,歡迎下面留言~ 😆