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

ari*_*ris 5 flutter

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

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

Rém*_*let 8

ModalRoute.of用于在导航历史记录中推送构建路线。

onGenerateRoute执行相同的操作,但导航历史记录中推送该路线之前

ModalRoute.of对于大多数用例来说已经足够了。但是onGenerateRoute比较灵活。它允许根据参数是什么有条件地构建路由,或者类型检查参数是否有效:

onGenerateRoute: (RouteSettings settings) {
  if (settings.name == '/custom-route') {
    assert(settings.arguments is MyCustomArgument);
  }
}
Run Code Online (Sandbox Code Playgroud)

或者:

onGenerateRoute: (RouteSettings settings) {
  if (settings.name == '/users') {
    if (settings.arguments != null) {
      return UserDetailsRoute(id: settings.arguments);
    }
    else {
      return UserListRoute();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)