不要把 push/pop 与页面混用
对于已经由 List<PageEntry> 管理的堆栈,不要再调用 Navigator.push/pop。
不要把 Widget 放进状态
不要把 Widget 实例放进页面元数据里,只保留 key 和类似路由的标识。
不要使用无边界键值
不要在同一个堆栈中重复使用 PageEntry.key。
迁移清单
在重构审查时使用这份清单,以保持架构一致。
检查清单
正确与错误
// 错误:对同一个堆栈同时混用命令式与声明式
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
// 正确:只更新声明式状态
setState(() {
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
审查提示
在代码审查时,关注 谁在负责堆栈变更 并拒绝通过多个接口修改同一堆栈的变更。