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

yno*_*tu. 2 flutter flutter-navigation

我想将数据传递到另一个屏幕。根据使用命名路由时的文档,我需要使用参数并使用:

Navigator.pushNamed(
  context,
  NextScreen.route,
  arguments: NextScreenArgs("pew"),
);
Run Code Online (Sandbox Code Playgroud)

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

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => NextScreen("pew"),
  ),
);
Run Code Online (Sandbox Code Playgroud)

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

Yau*_*pir 9

Flutter 团队在 github 上有一个关于路由的讨论。我喜欢这样的解释:

虽然不使用命名路由的导航对于较小的项目是可以的,但在更复杂的应用程序中它会增加代码重复。如果您有一个只允许登录用户进入某些页面或需要在用户导航时运行的任何其他类型的逻辑的路由保护,则尤其如此。

您也可以在这里阅读更多讨论:https : //github.com/flutter/flutter/issues/3867