route 是什么
在 Flutter 里,屏幕或页面通常称为 route。进入详情页就是 push 一个新 route,返回就是 pop。这个概念和 Android Activity、iOS ViewController 不完全一样,因为 Flutter 的 route 本质上仍然是 Widget。
基础跳转
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => const DetailPage(id: 1),
),
);
Navigator.of(context).pop();什么时候用 go_router
简单 App 可以直接用 Navigator。中大型项目、有底部 Tab、登录拦截、Web 地址栏同步、深链接需求时,推荐使用 go_router 或其他路由包统一管理。Flutter 官方导航说明也倾向于在复杂场景使用 Router/go_router 思路,而不是到处写命名路由。
实战建议
- 路由路径统一常量化。
- 详情页参数要有兜底,避免空值导致崩溃。
- 登录态拦截放在路由层,不要每个页面重复判断。
- Web 项目要提前决定 hash URL 还是 path URL。