在flutter中,我们有两种方法可以在销毁当前页面的同时退出页面。第一个是pushReplacement——
Navigator.pushReplacement(context, MaterialPageRoute(builder: (context){
return LocationScreen();
}));
Run Code Online (Sandbox Code Playgroud)
第二个是pushAndRemoveUntil-
Navigator.pushAndRemoveUntil(
context, MaterialPageRoute(builder: (context) => LocationScreen()), (
route) => false);
}
Run Code Online (Sandbox Code Playgroud)
这两者看起来完全一样。我通过谷歌搜索,但找不到满意的答案。有人可以解释一下这两者之间的区别吗?
mko*_*lys 13
想象一下您当前的导航堆栈是这样的:
/A
/B
/C
Run Code Online (Sandbox Code Playgroud)
现在,您想要到达路线/D。调用后pushReplacement,导航堆栈将如下所示:
/A
/B
/D
Run Code Online (Sandbox Code Playgroud)
就是这样,您无法使用此方法执行任何其他操作。但是,在使用 时pushAndRemoveUntil,您还可以指定路由谓词,该谓词会告诉您何时需要在推送下一个路由之前停止弹出堆栈。例如,您的路由谓词是route /A,结果将如下所示:
/A
/D
Run Code Online (Sandbox Code Playgroud)
请注意,路由/B和/C已从堆栈中删除。
总结一下:pushReplacement仅替换顶部路由,而pushAndRemoveUntil可以替换多个路由,直到您定义的谓词为止。
| 归档时间: |
|
| 查看次数: |
7221 次 |
| 最近记录: |