Flutter 子母帳號切換踩了四個坑:GetX 狀態管理的隱藏地雷
一個「切換帳號」引爆四個 Bug 子母帳號功能很直覺:母帳號可以切換到子帳號視角,查看子帳號的健康日記、操作資料。技術上就是換一組 JWT,重新載入資料。 聽起來簡單,實際上踩了四個 GetX 狀態管理的地雷,每個都不是表面看得出來的問題。 Bug 連鎖反應全景圖 先看整體:四個 bug 環環相扣,每修一個就暴露下一個。 flowchart TD A[切換子帳號] --> B{JWT 更新了?} B -->|是| C{userId / documentId 更新了?} C -->|否| D[API 500 / 日記查錯帳號] C -->|修好| E{ViewModel 有重建?} E -->|刪除重建| F{UI widget 指向新 ViewModel?} F -->|否:持有舊參考| G[首頁資料不更新] F -->|改為原地刷新| H{全域變數也更新了?} H -->|否:top-level final| I[Dialog 功能全失效] H -->|改為 getter| J{App 重啟能恢復?} J -->|否:狀態在記憶體| K[母帳號控制權消失] J -->|持久化到 SharedPreferences| L[全部修好] classDef error fill:#f8d7da,stroke:#dc3545,color:#721c24 classDef success fill:#d4edda,stroke:#28a745,color:#155724 classDef warning fill:#fff3cd,stroke:#ffc107,color:#856404 class D,G,I,K error class L success class A,B,C,E,F,H,J warning 第一坑:JWT 換了,身份沒換 切換帳號的核心邏輯只做了一件事——替換 JWT: ...