导航与路由:Navigator、go_router 与深链接思路

理解 Flutter 中 route 的概念,简单页面用 Navigator,复杂 App 推荐使用路由包管理。

路由导航

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。

官方参考