PageRouteBuilder的pageBuilder和transitionsBuilder typedef参数的区别

Difference between pageBuilder and transitionsBuilder typedef parameters of PageRouteBuilder

根据 official docspageBuilder 参数用于构建主要路线内容,transitionsBuilder 参数用于构建路线的转换。

所以它们都有不同的工作,但是如果 pageBuilder 用于构建主要路由内容那么为什么它还在其 typedef RoutePageBuilder, also in the transitionBuilder typedef RouteTransitionBuilder 中声明了两个 Animation 参数,有两个 Animation 参数声明为 animationsecondaryAnimation。 这两者有什么区别 Animations 以及我们如何使用它们?

routes.dart中的文档:


  /// [buildPage] is only called when the route is first built, and rarely
  /// thereafter. In particular, it is not automatically called again when the
  /// route's state changes unless it uses [ModalRoute.of]. For a builder that
  /// is called every time the route's state changes, consider
  /// [buildTransitions]. For widgets that change their behavior when the
  /// route's state changes, consider [ModalRoute.of] to obtain a reference to
  /// the route; this will cause the widget to be rebuilt each time the route
  /// changes state.
  ///
  /// In general, [buildPage] should be used to build the page contents, and
  /// [buildTransitions] for the widgets that change as the page is brought in
  /// and out of view. Avoid using [buildTransitions] for content that never
  /// changes; building such content once from [buildPage] is more efficient.

  /// The [buildTransitions] method, in contrast to [buildPage], is called each
  /// time the [Route]'s state changes (e.g. the value of [canPop]).
  ///
  /// The [buildTransitions] method is typically used to define transitions
  /// that animate the new topmost route's comings and goings. When the
  /// [Navigator] pushes a route on the top of its stack, the new route's
  /// primary [animation] runs from 0.0 to 1.0. When the Navigator pops the
  /// topmost route, e.g. because the use pressed the back button, the
  /// primary animation runs from 1.0 to 0.0.