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() 方法那么它将导致大量代码重复。
我想将数据传递到另一个屏幕。 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() 方法那么它将导致大量代码重复。