根据official docs,pageBuilder
参数用于构建主要路线内容,而transitionsBuilder
参数用于构建路线的过渡。
因此它们两个都有不同的工作,但是如果使用pageBuilder
来构建主要的路由内容,那么为什么还要在其typedef RoutePageBuilder中也声明两个Animation
参数,也在{ {1}} typedef RouteTransitionBuilder,有两个transitionBuilder
声明为Animation
和animation
的参数。
这两个secondaryAnimation
和我们如何使用它们有什么区别?
答案 0 :(得分:1)
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.