在任何给定情况下,是否有任何理由要使用一个?我试图弄清楚为什么有两种方法可以做到这一点。我指的是“使用参数导航”食谱:
https://flutter.dev/docs/cookbook/navigation/navigate-with-arguments
答案 0 :(得分:1)
ModalRoute.of
用于在 被推入导航历史记录后构建路线。
onGenerateRoute
的操作相同,但是之前该路线已被推送到导航历史记录中。
ModalRoute.of
对于大多数用例就足够了。但是onGenerateRoute
更灵活。它允许根据参数是有条件地构建路由,或进行类型检查以确保参数有效:
onGenerateRoute: (RouteSettings settings) {
if (settings.name == '/custom-route') {
assert(settings.arguments is MyCustomArgument);
}
}
或:
onGenerateRoute: (RouteSettings settings) {
if (settings.name == '/users') {
if (settings.arguments != null) {
return UserDetailsRoute(id: settings.arguments);
}
else {
return UserListRoute();
}
}
}