将数据传递给 Flutter 路由的 2 种方式之间的区别

use*_*281 5 dart flutter

我正在查看 flutter.dev 教程。我对他们的 2 篇文章感到有些困惑。

1)将数据发送到新屏幕 https://flutter.dev/docs/cookbook/navigation/passing-data

2)将参数传递给命名路由 https://flutter.dev/docs/cookbook/navigation/navigate-with-arguments

对我来说,他们或多或少都完成了同样的事情,但方式不同。似乎#1 使用 Navigator 的“arguments”参数传递数据,然后通过 ModalRoute.of(context).settings.arguments 将其拉出目标小部件。似乎 #2 使用目标小部件的构造函数来接收数据。我错过了什么吗?我什么时候会使用一个和另一个?

谢谢!

Rém*_*let 5

有两个主要区别:

  • push vs pushNamed,这意味着动态路由和静态路由。
  • 谁创建了Route子类。Using push,它是调用的小部件,Navigator.push而 using pushNamed,它是MaterialApp/CupertinoApponGenerateRoute

这会对路由之间的转换、关注点分离或深层链接等功能产生影响。