剛進入 Flutter 嗎?適合初學者食用,GetX 是否適合你呢!
這篇寫於 2023 年。工具和 API 變化很快,部分步驟可能已經不適用。
Use GetX or not?
常常看到有許多人在討論 GetX 如何,通常很多是剛進入 Flutter 的初學者看到,或是有許多狀態管理可以選擇,好奇所以詢問,很棒的是有些人在決定投入之前有先試著詢問社群,我這邊先給個結論
不建議你使用,尤其在專業以及大型的產品上更不應該使用,也無法幫助你的職涯發展。
好了到這邊,可以去看迷因或搞笑影片舒壓了
如果你寫 Getx 一段時間,產品運行良好,恭喜你很幸運,做得很好,保持喜歡並持續為它貢獻,有餘力的話去幫忙改善它
而為什麼不建議呢?如果你今天是一個專職的 Flutter 工程師、開發者,想要持續自己提升能力的話,那它擁有幾個特點你必須知道💥
- 自成一格,感覺是在開發 Getx APP
- 開發方式與 Flutter 所給予得觀念不一致,你只是用但不理解
- 包山包海,有 Router、Storage、i18n、Http 等等,做了很多套件在做的事情,太多東西導致深度不夠,缺少人力優化以及改善現有問題,上述提到的每一樣都更好的選項
- 身為大型專案或是框架?運行這麼久卻只有 README 文件,沒在用都聽得到其他人抱怨,缺少基本的 API 說明
- 官方沒有積極維護與改善,存在許多舊有問題,也沒什麼 Roadmap 和規劃資訊,一旦完全停擺可能頭就大了
- 測試撰寫不友善,是個大麻煩,難以確保產品的穩定性
你可以想一下,包了這麼多東西的套件,如何即時因應 Dart 和 Flutter 做更新?很明顯的團隊以及社群人力不足,如果公司的大型專案這時候發現問題了,想要修正,你可能整套直接重寫嗎?還是先完成功能再說,之後遇到問題再想辦法,這樣不錯對吧 ⁉ ️
有些人寫了幾年的 Getx 但對 Flutter 不熟,可能只了解比較淺的觀念,它對我們沒有什麼加分,很多國外企業看到履歷上使用過 Getx 可能會印象不好甚至是直接刷掉,這樣你會覺得很誇張嗎?回過頭來只是位 Getx developer 而不是 Flutter developer,後來面對學習 Flutter 成本太高,覺得很不適應和後悔
再三強調,Getx 算是特例,別被套件 Likes 以及初期的開發便利性給欺騙,Pub 相關資訊只是參考,大部分適用但還是需要再三確認,可以的話看源碼最好
當然如果你是好奇想了解,在自己的專案把玩那很棒,這是懂它最快的方式,但真的不要在一開始就碰,這是我能提供的建議,也是了解很多開發者以及社群想法後的結論。
推薦幾個狀態管理的學習選項📝#
- ScopedModel
- Provider
- Bloc
- Riverpod
套件如何選擇與注意事項💡#
- 只支援單一任務,避免臃腫
- 沒有必要不要使用
- 可以的話想要什麼自己撰寫或改寫
相關討論#
Twitter、Reddit 很常有 Getx 討論串,可以去看看哦
- https://www.reddit.com/r/FlutterDev/comments/106rkc9/getx_or_not/
- https://twitter.com/creativemaybeno/status/1418148816444923906/
- https://www.reddit.com/r/FlutterDev/comments/q95l2x/why_is_getx_hated/
- https://www.reddit.com/r/FlutterDev/comments/po1bei/why_is_getx_such_a_bad_state_management/
- https://twitter.com/remi_rousselet/status/1468524635608256516
一句話#
Do one thing and do it perfectly.
以上希望有幫助到你,也歡迎有什麼想法來討論,接下來一起期待 1/25 Flutter Forward 吧 💙
- Flutter CICD 使用 Gitlab Runner 和 App Center 實作 part.1
- Flutter CICD 使用 Gitlab Runner 和 App Center 實作 part.2
- 使用 CodeMagic 和 Firebase 實現 Flutter CICD
- 輕鬆完成Flutter開發環境,最新版!
- 實作Flutter多變有趣的滾動效果CustomScrollView!
- 如何在Flutter使用 Makefile 節省你的時間?
- Easily understand StatefulWidget LifeCycle of Flutter
- “freezed” makes model class strong and easily
- 提高Flutter性能的小技巧!(一)
- 提高Flutter性能的小技巧!(二)
- 提高Flutter性能的小技巧!(三)
- What are Async and Isolates in Flutter?
- LoadBalancer is optimization for Isolates in Flutter
- Riverpod 輕鬆學,原來這麼好用!
- Riverpod 輕鬆學(二),一些進階用法!
About#
- GitHub: chyiiiiiiiiiiii
- Instagram: flutterluvr.yii
- Linkedin: yiichenhi
- Youtube: Yii
- Youtube: 一起饅頭(美食頻道)
- Email: ab20803@gmail.com
Contribute#
謝謝你花費時間看完,非常感謝!
如果覺得文章不錯的話可以贊助,讓我有更多動力和熱情分享學習紀錄和生活!請我喝一杯咖啡吧~
End#
希望有幫助到你/妳,歡迎追蹤我,方便瀏覽最新的文章~
本文原刊登於 Medium。