Navigator.push
作用:把一个新的路由(页面)压入栈顶。
特点:
- 当前页面(旧页面)还在路由栈里,只是被新页面盖住了。
- 你可以在新页面里调用
Navigator.pop(context)
回退到旧页面。
总之:push 是「叠加页面」的逻辑。
页面栈: [A]
Navigator.push(B)
页面栈: [A, B]
Navigator.pop()
页面栈: [A]
Navigator.pushReplacement
作用:把一个新的路由(页面)替换当前的路由。
特点:
- 当前页面(旧页面)会被移出栈,新的页面取而代之。
- 你不能返回到旧页面,因为它已经被销毁了。
- 适用于:登录成功后跳转到主页、引导页跳到应用首页等场景。
总之:replacement 是「替换页面」的逻辑。
页面栈: [A]
Navigator.pushReplacement(B)
页面栈: [B]
使用场景对比
方法 | 适用场景 |
---|---|
push |
普通页面跳转,需要能回退时 |
pushReplacement |
登录页 → 首页、Splash页 → 首页、完成注册 → 首页,不需要回退时 |