为什么在Flutter中使用onGenerateRoute()和ModalRoute.of()?

时间:2019-07-09 22:07:16

标签: flutter

在任何给定情况下,是否有任何理由要使用一个?我试图弄清楚为什么有两种方法可以做到这一点。我指的是“使用参数导航”食谱:

https://flutter.dev/docs/cookbook/navigation/navigate-with-arguments

1 个答案:

答案 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();
    }
  }
}