push/popとpagesの混在
同じスタックを Navigator.push/pop と List<PageEntry> の両方で更新しないでください。
Widgetを状態に保持
ページ状態にはWidget本体を入れず、識別子とメタデータのみに限定します。
重複キー
同一スタックで同じ PageEntry.key を再利用すると、予期しない再構築が起こります。
移行チェックリスト
レビュー時にこのチェックを通すと、宣言的設計の崩れを早期に検出できます。
チェック要点
Bad / Good 例
// Bad: 同じスタックを命令的と宣言的の両方で更新
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
// Good: 宣言的な状態更新に統一
setState(() {
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
レビュー観点
コードレビューでは スタック更新の責務が1箇所か を必ず確認してください。