Flutter入門指南

更新於 2022/08/11閱讀時間約 3 分鐘
如果你是剛入門Flutter的工程師,可以參考這篇文章,我會告訴大家自己常用的套件以及如何規劃檔案的分類!
最近有新開一個部落格是在介紹Flutter相關的文章,大家可以去看看~

GetX

Getx是一個非常輕量化的套件,他的主要功能為狀態管理(State management)、路徑管理(Route management)和依賴管理(Dependency management),非常容易上手適合剛入門的工程師來使用,他也有提供中文的說明,大家可以進去看看!

檔案規劃

在我使用GetX時,我會這樣規劃自己的檔案分類

Config

我會拿來放一些常數,像是timeout的時間,因為我是使用Firestore來儲存資料,所以我還會在這邊放我資料庫路徑的參數。
class Paths {
  Paths._();
  static const String post = 'post';
  static const String user = 'user';
}

Helper

Helper則是放一些工具,像是數學工具來做一些加減乘除或是Matrix的處理,又或是圖片處理,來選擇相簿內的照片等功能。

Models

Models放各種會使用到的資料結構,可以根據自己的專案所需再細分成各個資料夾,各個model內則建議有一些內建的function,像是copyWith, toJson, fromJson等基本的功能,之後有機會再介紹。

Network

Network則是根據每個人呼叫api等等的習慣來決定裡面的資料夾和檔案,我個人習慣使用dio來呼叫api,而repositories則是用來處理Firestore相關的api

Pages

Pages就是app上的各個頁面,而裡面又會分成一個主畫面 + 一個getX的controller(GetX的binding我也會寫在裡面) 再加上一個widgets的資料夾,當然也可以根據專案的複雜程度再細分成不同的結構。

Routes

Routes則是用來處理GetX的路徑
class Routes {
  Routes._();
  static const homeRoute = '/home';
  static const splashRoute = '/splash';
  static final List<GetPage> routes = [
    GetPage(name: splashRoute, page: ()=> const SplashPage(), binding: SplashBinding()),
    GetPage(name: homeRoute, page: ()=> const HomePage(), binding: HomeBinding()),
  ];
}

Widgets

Widgets用來放各個頁面會共用到的Widgets
今天就先介紹到這裡,如果有任何問題、錯誤或是希望我介紹的主題都可以留言告訴我,謝謝!
avatar-img
3會員
2內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Flutter is a powerful, open-source UI software development kit created by Google.
Thumbnail
解析成List List items=json.decode(jsonStr); print(items[0]["your_key"]); 解析成Map Map<String, dynamic> user = json.decode(json); print('${user['your_k
Thumbnail
這邊會使用WebSocketChannel去與http://www.websocket.org做連線。 連線 final channel = IOWebSocketChannel.connect('wss://echo.websocket.events'); 接收 StreamBui
Thumbnail
Dio是一個Dart Http請求庫,支援Restful API、FormData、攔截器、請求取消、Cookie管理、檔案上傳/下載、逾時等。 加入 dependencies: dio: ^x.x.x #请使用pub上的最新版本 使用 GET Response response;
Thumbnail
配置 idleTimeout:在httpClient請求結束後,會繼續保持連線,直到超過idleTimeout值才會關閉連接。 connectionTimeout:和伺服器建立連線逾時,如果超過connectionTimeout值則會拋出SocketException異常。 maxConnec
Thumbnail
調酒文化在近幾年已成為最常見夜晚休閒娛樂,不管是一人獨處;或三五好友歡聚,酒吧都是個好選擇。儘管如此,對於從未去過酒吧的人,若沒有帶領想要推開那扇大門,似乎還是覺得不知所措:該如何點酒?要付多少錢?一個人會很怪嗎……別擔心!就來手把手解惑所有第一次去酒吧的問題吧!
Thumbnail
本範例主要說明如何運用Flutter 繪圖與動態相關的API並搭配provider套件進行實作輪盤賭選擇 ( Roulette Wheel Selection ) 程式。
這是《產品經理好奇的事》第一個加入Vocus Premium計畫的系列文章。 簡單地說,就是訂閱付費,就可以看到方格子平台上所有加入Vocus Premium計畫的文章。 想了解更多,就參考這個官方說明吧。
Thumbnail
很多人不知道從哪邊接收資訊,最後得到一個簡單的結論:「想去台灣科技業當PM」 這是一句非常模糊的話,如果用這樣的想法去找工作,不是面試機會無下文、不然就是進去後,現實與想像落差十分龐大。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Flutter is a powerful, open-source UI software development kit created by Google.
Thumbnail
解析成List List items=json.decode(jsonStr); print(items[0]["your_key"]); 解析成Map Map<String, dynamic> user = json.decode(json); print('${user['your_k
Thumbnail
這邊會使用WebSocketChannel去與http://www.websocket.org做連線。 連線 final channel = IOWebSocketChannel.connect('wss://echo.websocket.events'); 接收 StreamBui
Thumbnail
Dio是一個Dart Http請求庫,支援Restful API、FormData、攔截器、請求取消、Cookie管理、檔案上傳/下載、逾時等。 加入 dependencies: dio: ^x.x.x #请使用pub上的最新版本 使用 GET Response response;
Thumbnail
配置 idleTimeout:在httpClient請求結束後,會繼續保持連線,直到超過idleTimeout值才會關閉連接。 connectionTimeout:和伺服器建立連線逾時,如果超過connectionTimeout值則會拋出SocketException異常。 maxConnec
Thumbnail
調酒文化在近幾年已成為最常見夜晚休閒娛樂,不管是一人獨處;或三五好友歡聚,酒吧都是個好選擇。儘管如此,對於從未去過酒吧的人,若沒有帶領想要推開那扇大門,似乎還是覺得不知所措:該如何點酒?要付多少錢?一個人會很怪嗎……別擔心!就來手把手解惑所有第一次去酒吧的問題吧!
Thumbnail
本範例主要說明如何運用Flutter 繪圖與動態相關的API並搭配provider套件進行實作輪盤賭選擇 ( Roulette Wheel Selection ) 程式。
這是《產品經理好奇的事》第一個加入Vocus Premium計畫的系列文章。 簡單地說,就是訂閱付費,就可以看到方格子平台上所有加入Vocus Premium計畫的文章。 想了解更多,就參考這個官方說明吧。
Thumbnail
很多人不知道從哪邊接收資訊,最後得到一個簡單的結論:「想去台灣科技業當PM」 這是一句非常模糊的話,如果用這樣的想法去找工作,不是面試機會無下文、不然就是進去後,現實與想像落差十分龐大。