應避免的反模式

當命令式與宣告式模型混在一起時,最容易出現 bug。請維持嚴格的狀態邊界。

push/pop 與頁面混用

對已由 List<PageEntry> 管理的堆疊,不要呼叫 Navigator.push/pop。

狀態中的 Widget

不要把 Widget 實例放進頁面 metadata。只保留 key 與類似路由的識別字。

重複的 key

不要在同一個堆疊中重複使用相同的 PageEntry.key 值。

遷移檢查清單

在重構審查期間使用這份檢查清單,以保持架構一致。

檢查清單

好與壞

// 壞:同一個堆疊混用命令式與宣告式做法
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];

// 好:只更新宣告式狀態
setState(() {
  _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
審查提示

在 code review 時,請追蹤 stack 變更的責任歸屬 並拒絕透過多個 API 變更同一個堆疊的修改。

上一頁

返回處理

下一頁

簡介