[譯] Flutter 實用指南:給初學者的 6 個小帖士

我剛剛在 Google Play 商店 提交了一款名爲 Steady Calendar 的應用,這是一款追蹤極簡主義習慣的應用,由個人妻子 Irina 設計,而且在我成爲父親一小段空閒時間內獨立開發出來的。此 App 由 iOS 移植到了 Flutter。在上週由 @flutterfyi 組織的 Flutter Camp 上談到的經驗分享(演示文稿),我決定將個人談話歸結爲對每一個人來講更加豐富的東西,成爲即將到來的 Flutter 課程 —— Flutter 實用指南的前奏。html

好吧,在開發完這個 App 後,我幾乎再沒有富餘時間去投機取巧走捷徑。我浪費了大量時間在認爲本身必須掌握好 Flutter 上,最後結果也證實了毫無用處,純粹是浪費時間。前端

因此說,這裏提供一些給 Flutter 新人的建議。android

1. 在開始使用組件時儘量保持簡單

Flutter 在示例代碼及其大多數庫中大量使用了 Material Design 組件。若是你想快速開發完 UI,或者沒有時間同時編寫 Android 和 iOS 應用,請堅持使用 Material Design。ios

然而,Material Design 的問題在於它可能會疏遠你的 iOS 用戶,除非能適當地個性化定製。Google 最近一直在努力使它的庫更加靈活,並展現其兼容性,鼓勵開發人員擺脫那些看起來像 Google Docs 的枯燥,重複的 UI。git

Flutter 確實提供了 「Cupertino」 iOS 風格組件,可是以須要進行大量代碼拆分爲代價的,由於這些組件須要其餘父組件才能正常工做。此外,在最近的一次活動中與其中一名員工交談了解到,Google 並未專一於提供全面的、完善的 iOS 組件。github

在個人下一個應用中,我將大量定製 Material Design 來知足設計需求。這裏有一些你可能想要學習的組件,你能夠靈活安排你的時間來學習:編程

  • Scaffold 以及 AppBar(分別用於屏幕和導航欄的 Container)
  • Layouts,可以使用 Column、Row
  • Container(可以設置 ‘padding’、‘decoration’ 等)
  • Text
  • AssetImageNetworkImage 做爲 Bonus)
  • RaisedButton(從如今起忘記 icon)

2. 從第一天開始忘記學習 Dart

Flutter 使用了 Dart,這個語言很是容易學習,即便是剛接觸軟件開發的人也是如此。甚至,讓應用運行並渲染一些簡單的 UI 根本不須要任何 Dart 知識。後端

在你熟悉了佈局的基本知識,能在頁面上獲取一些內容以後,建議再花點單獨的時間去閱讀下 Dart。以後,具體取決於你的經驗水平,你能夠準備學習諸如處理事件(即點擊按鈕)之類的內容,甚至是從 API 中獲取數據。api

3. 從如今起堅持使用無狀態的組件

‘StatelessWidget’ 是任何 Widget 在 Flutter 中擴展的一個默認類。顧名思義,它們用於渲染不須要保持任何狀態的組件。緩存

與之相對的是 ‘Statefull Widget’,Flutter 的文檔經過展現,如何說明、處理事件和更改頁面上的某些信息來呈現的。若是你是編程新手或初級開發人員,那麼一開始就不須要學習這一點。我之因此這麼說,是由於在學習任何東西之初,動力是繼續前進的關鍵,你的主要關注點應該是能用一些內容去渲染漂亮的屏幕。

4. 創建一些「激勵里程碑」

此外,在學習任何東西時,達到一些重要的里程碑是保持動力的關鍵。如下是我推薦的一些學習里程碑:

  • 第一個里程碑:可以開發具備簡單佈局、文本、尚不能點擊的按鈕和圖像的頁面。
  • 第二個里程碑:可以在真機上運行你的應用。這個很是酷,真的讓人頗有動力。
  • 第三個里程碑:學習如何鏈接按鈕,更改某些狀態,並使用 StatefulWidget 在屏幕上渲染它。
  • 第四個里程碑:花幾個小時閱讀 Dart(若是你願意,這一步甚至能夠在上一個里程碑以前)。
  • 第五個里程碑:可以從公共 API(示例)獲取一些數據並在頁面上渲染。學習如何使用和反序列化 JSON。
  • 第六個里程碑:向朋友發佈實際的 iOS 和/或 Android 版本。這個過程會讓你感到驚喜,除非你還在評估 Flutter 是否適合你,相信我,儘早去完成這件事。即便這個應用對你的朋友和家人沒什麼用處,向他們展現你開發的成果,而且經過 iTunes Connect 或 Google Play 商店(更簡單)將其儘早發送給測試用戶。這是保持動力的真正使人驚歎的方式,並確信有一天你能夠向公衆推出這款應用。

5. 學會如何得到幫助

若是在 Stack Overflow 上找不到問題的答案,請習慣使用 Flutter Google Group。在實際提問時,我建議前者優先於 Stack Overflow。你能夠在這裏閱讀更多建議。

嘗試找一些能夠幫助你的導師。你會發現 Flutter 社區的人們很是投入和熱情。

6. 分享你的做品

我認爲 Twitter 是分享你做品的一個不錯的方式。即便是個簡單的功能,簡單地發佈一張應用截圖並說起 @flutterio 就真的很是激勵了。

學習結語

總的來講,在學習資源方面,你有不少能夠去使用,但我仍未發現有足夠實際的、點對點、通過實戰考驗的 Flutter 教程。固然,Google 製做的 YouTube 視頻以及 Udacity 課程都很是棒。可是,這些課程只能覆蓋你在應用商店裏上架真正的應用所須要學習知識的五分之一。我之因此這麼說是由於,最近我寫了一個從 iOS 到 Flutter 端的簡單應用:Steady Calendar,我發現像 JSON、API、管理多個構建環境、本地化、緩存、代碼組織、狀態管理、爲設計真正的自定義 UI 調整資料等等,都須要深刻挖掘。

因此,我計劃發佈一個測試版 Flutter 課程,在此你將把我學習 Flutter 的經驗,總結爲實用的、更「點對點」類型的教程,這些教程將重點關注 Flutter 和全部可能須要寫真正上架應用的一些技術訣竅。

若是你想在我 18 年 7 月發佈第一課時註冊收到通知,請在此處註冊:實用的 Flutter 教程.

祝你在 Flutter 的世界裏玩的開心!

若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索