Flutter實(shí)戰(zhàn) Flutter APP代碼結(jié)構(gòu)

2021-03-09 14:56 更新

我們先來(lái)創(chuàng)建一個(gè)全新的 Flutter 工程,命名為"github_client_app";創(chuàng)建新工程的步驟視讀者使用的編輯器而定,都比較簡(jiǎn)單,在此不再贅述。創(chuàng)建完成后,工程結(jié)構(gòu)如下:

github_client_app
├── android
├── ios
├── lib
└── test

由于我們需要使用外部圖片和 Icon 資源,所以我們?cè)陧?xiàng)目根目錄下分別創(chuàng)建“imgs”和“fonts”文件夾,前者用于保存圖片,后者用于保存 Icon 文件。關(guān)于圖片和 Icon,讀者可以參考第三章中相應(yīng)的內(nèi)容。

由于在網(wǎng)絡(luò)數(shù)據(jù)傳輸和持久化時(shí),我們需要通過(guò) Json 來(lái)傳輸、保存數(shù)據(jù);但是在應(yīng)用開(kāi)發(fā)時(shí)我們又需要將 Json 轉(zhuǎn)成 Dart Model 類(lèi),現(xiàn)在我們使用在第十一章中“Json 轉(zhuǎn) Model”小節(jié)中介紹的方案,所以,我們需要在根目錄下再創(chuàng)建一個(gè)用于保存 Json 文件的“jsons”文件夾。

多語(yǔ)言支持我們使用第十三章“國(guó)際化”中介紹的方案,所以還需要在根目錄下創(chuàng)建一個(gè)“l(fā)10n”文件夾,用于保存各國(guó)語(yǔ)言對(duì)應(yīng)的 arb 文件。

現(xiàn)在工程目錄變?yōu)椋?/p>

github_client_app
├── android
├── fonts
├── l10n-arb
├── imgs
├── ios
├── jsons
├── lib
└── test

由于我們的 Dart 代碼都在“l(fā)ib”文件夾下,筆者根據(jù)技術(shù)選型和經(jīng)驗(yàn)在lib文件下創(chuàng)建了如下目錄:

lib
├── common
├── l10n
├── models
├── states
├── routes
└── widgets 
文件夾 作用
common 一些工具類(lèi),如通用方法類(lèi)、網(wǎng)絡(luò)接口類(lèi)、保存全局變量的靜態(tài)類(lèi)等
l10n 國(guó)際化相關(guān)的類(lèi)都在此目錄下
models Json 文件對(duì)應(yīng)的 Dart Model 類(lèi)會(huì)在此目錄下
states 保存 APP 中需要跨組件共享的狀態(tài)類(lèi)
routes 存放所有路由頁(yè)面類(lèi)
widgets APP 內(nèi)封裝的一些 Widget 組件都在該目錄下

注意,使用不同的框架或技術(shù)選型會(huì)對(duì)代碼有不同的組織方式,因此,本節(jié)介紹的代碼組織結(jié)構(gòu)并不是固定或者“最佳”的,在實(shí)戰(zhàn)中,讀者可以自己根據(jù)情況調(diào)整源碼結(jié)構(gòu)。但是無(wú)論采取何種源碼組織結(jié)構(gòu),清晰和解耦都是一個(gè)通用原則,我們應(yīng)該讓自己的代碼結(jié)構(gòu)清晰,以便交流和維護(hù)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)