Flutter 中的 pushReplacementNamed 和 popAndPushNamed 有啥区别?

Posted

技术标签:

【中文标题】Flutter 中的 pushReplacementNamed 和 popAndPushNamed 有啥区别?【英文标题】:What is the difference between pushReplacementNamed and popAndPushNamed in Flutter?Flutter 中的 pushReplacementNamed 和 popAndPushNamed 有什么区别? 【发布时间】:2020-05-06 01:52:15 【问题描述】:

Flutter#navigator.dart 中的 NavigatorState 类有 2 个具有类似行为的方法。 Flutter中pushReplacementNamedpopAndPushNamed有什么区别?

pushReplacementNamed

通过推送名为 [routeName] 的路线替换导航器的当前路线,然后在新路线完成动画处理后处理先前的路线。

popAndPushNamed

从导航器中弹出当前路线并在其位置推送命名路线。

【问题讨论】:

【参考方案1】:

只是一个简短的答案。

区别仅在于颤动执行的动画

pushReplacementNamed -->> "进入动画" popAndPushNamed -->> "退出动画"

用户 A R 也在他的回答中发布了这个。

pushReplacementNamed 将执行进入动画,popAndPushNamed 将执行退出动画。


【讨论】:

【参考方案2】:

在 pushReplacementNamed 中,导航器的当前路线推送名为 [routeName] 的路线,然后在新路线完成动画后处理之前的路线 而在 popAndPushNamed 中,当前路由首先弹出,然后新路由被推入,它不会等待其他路由的动画完成

【讨论】:

可能会帮助添加一些示例以进一步强调差异?【参考方案3】:

@A R 的解释很好,但这不是一个实用的答案。

除非只有一层,否则两者的效果完全一样。

这是因为栈为 1 时使用 popPushedNamed 时应用程序被终止。

而且正如@encubos 所说,动画效果似乎有所不同。

【讨论】:

以上是关于Flutter 中的 pushReplacementNamed 和 popAndPushNamed 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何去除 Flutter 中的“XMLHttpRequest 错误”? (Django 后端,Flutter 前端)

Flutter 中的 pushReplacementNamed 和 popAndPushNamed 有啥区别?

Flutter 中的 shrinkWrap 属性有啥作用?

“flutter doctor”命令找不到安装在 Android Studio 中的 Flutter 和 Dart 插件

Flutter 中的路由

Flutter中的Timer