Skip to content

如何用 Flutter 開發跨平台 App

Flutter 適合 Android、iOS 需要大致相同功能與視覺風格的產品。它使用 Dart 語言,並由自己的繪製系統呈現介面。這次我們做一個門市費用簿:輸入支出、更新今日總額,重新開啟後記錄仍然存在。

1. 從正式產品理解 Flutter

My BMW 把車況、充電、保養與遠端操作放在同一個 App。它先顯示車輛與目前狀態,再提供次要入口。

My BMW 的車況與服務入口

Google Pay 在付款或取得獎勵後立即顯示明確結果;Nubank 則用安靜的資訊層級整理帳戶和服務入口。

Google Pay 的付款狀態與回饋

Nubank 的帳戶與協助入口

費用簿也採用同樣的順序:今日總額、最新記錄、明確的新增按鈕。

2. 建立並執行專案

安裝穩定版 Flutter 後,先檢查環境:

bash
flutter doctor
flutter create store_expense_ledger
cd store_expense_ledger
flutter run -d chrome

flutter doctor 只會列出這台電腦真正準備好的平台。Web 可以執行,不代表 Android SDK、Xcode、簽名與手機測試也完成了。

3. 做出第一個費用首頁

把計數器範例改成門市費用首頁。顯示今日總額、費用清單和「新增費用」按鈕。

實際執行的門市費用簿首頁

點擊按鈕後開啟表單,加入類別、說明、金額、保存與取消。

實際執行的新增費用表單

4. 讓錯誤與成功都看得懂

空白欄位或小於等於零的金額,要在欄位下方顯示簡短說明,而且不能保存。

空白表單的欄位錯誤提示

保存成功後關閉表單,把記錄放到清單最上方,更新總額並顯示成功訊息。

輸入「辦公用品」、「影印紙」與 56,確認總額、清單和提示只更新一次。

保存後同時更新總額、清單與訊息

5. 關閉後仍要找得到資料

把費用記錄保存在本機,程式啟動時再載入。先不要加入帳號和伺服器。

保存兩筆資料,重新整理,再關閉瀏覽器後重開。總額與兩筆記錄都回來,才算通過。

之後再逐步加入編輯、刪除確認、穩定的記錄 ID,以及連接公司後端。使用者能看哪些門市和費用,必須由伺服器決定,不能讓 App 自己修改角色。

6. 測試與建置

bash
flutter analyze
flutter test
flutter build web

Android 需要 Android Studio、SDK、簽名與真機;iOS 需要 Mac、Xcode、Simulator Runtime 或真機與簽名。桌面版也要在沒有開發環境的乾淨電腦安裝測試。

本章使用 Flutter 3.44.9 與 Dart 3.12.2,靜態分析、Widget Test 和 Web 建置都通過,並實際驗證表單錯誤、保存成功與重新整理後資料仍在。這台電腦缺少 Android SDK,也沒有可用的 iOS Simulator Runtime 和 CocoaPods,所以沒有宣稱手機建置與上架已完成。

先把一筆費用從輸入、驗證、保存到重新開啟都做穩,再接帳號、同步與正式發布。