Navigator.push() vs Navigator.pushNamed() 将数据传递到屏幕时

Navigator.push() vs Navigator.pushNamed() when passing data to screen

我想将数据传递到另一个屏幕。 According to the docs 使用命名路由时我需要使用参数并使用:

Navigator.pushNamed(
  context,
  NextScreen.route,
  arguments: NextScreenArgs("pew"),
);

然而,同样的(?)可以通过使用来完成:

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => NextScreen("pew"),
  ),
);

使用pushNamed有什么区别或优势吗?

Flutter 团队在 github 上讨论了路由问题。 我喜欢这个解释:

While navigation without using named routes is OK for smaller projects, in more complex apps it adds code duplication. This is especially true if you have a route guard to only allow signed-in users enter certain pages, or any other kind of logic which needs to run as the user navigates.

您还可以在此处阅读更多讨论: https://github.com/flutter/flutter/issues/3867

Navigator.push() 方法适用于只有两条或三条路线的情况。但是当涉及到复杂的应用程序时,您可能会有多条路线。在那种情况下,如果我们使用 Navigator.push() 方法那么它将导致大量代码重复。