在Flutter中使用push与pushNamed的优缺点

3
有人能概述Flutter中pushpushNamed的优缺点吗?
经过一些研究,我只找到了这个GitHub问题
据我所知: push
  • 不使用字符串,因此减少了输入路由时出现错误的可能性。
  • 通过构造函数将参数传递为参数
pushNamed
  • 使用字符串,但可以设置为常量,然后引用
  • 通过创建对象并从中提取参数来传递参数
应该使用哪一个? 哪一个被推荐使用? 这取决于特定的用例/场景吗?
我可以看到,如果您要向新屏幕传递大量信息,则使用对象更容易,但我倾向于更频繁地使用push
感谢您的帮助。
1个回答

0

如果你期望在Web上发布你的应用,出于一些原因,pushNamed()比push()更受欢迎。

导航在Web应用上按预期工作

如果你设计路由以接受来自URL路径或查询参数的参数,当你刷新页面时,你就不需要担心出现奇怪的问题。如果你使用push()进行导航,在刷新网页时会出现许多问题,因为传递的参数在刷新后不会被保留。

声明式导航更容易

命令式路由(例如,通过推送和弹出路由创建导航栈的类型)已知会导致浏览器历史问题。这就是为什么Navigator 2.0和更新的路由库,如go_router专注于声明式路由(例如,告诉Flutter导航栈应该看起来像什么)的原因之一。命名路由鼓励你倾向于声明式路由。

深度链接可以直接使用

由于每个路由都有名称并从URL路径中提取其所有必需的参数,因此通常可以在不执行太多其他操作的情况下深入链接到应用程序中的内容。

有关更多信息,请参阅官方的Flutter文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接