"Sqflite"
- 1000 本書、1001 次 SQL — N+1 查詢藏在 async mapper 裡 N+1 查詢由兩個各自合理的函式組合而成:單筆轉換函式順便查關聯(mapper 做 IO)、列表方法用 Future.wait 把它乘以 N。修法是 IO 上移——一次批次 IN 查詢、記憶體組裝、轉換函式變純。mapper 簽名是 async 就是訊號;開發期資料量小、惡化是上線後隨資料成長的乘法。
- SQLite 只吃三種型別 — value object 在持久化邊界的序列化契約 把 value object 直接塞給 sqflite 會炸 Invalid argument——SQLite 只接受 num / String / Uint8List,VO 必須在 repository 邊界拆成基本型別、讀回時重建。用 toString/fromString 當轉換通道是權宜:它依賴兩者對稱這條沒人強制的隱性契約,正解是語意明確的序列化方法。