PageRouteBuilder({super.settings, requiredthis.pageBuilder,this.transitionsBuilder = _defaultTransitionsBuilder,this.transitionDuration =constDuration(milliseconds:300),this.reverseTransitionDuration =constDuration(milliseconds:300),this.opaque =true,this.barrierDismissible =false,this.barrierColor,this.barrierLa...
先来看下PageRouteBuilder的定义: classPageRouteBuilder<T>extends PageRoute<T>{PageRouteBuilder({super.settings,requiredthis.pageBuilder,this.transitionsBuilder=_defaultTransitionsBuilder,this.transitionDuration=constDuration(milliseconds:300),this.reverseTransitionDuration=constDuration(milliseconds:300),this.opaq...
正常情况下,我们进行路由跳转需要用到Navigator和MaterialPageRoute,如下所示: Navigator.push(context, MaterialPageRoute(builder: (context) { return const NextPage(); 如果要实现特定的路由动画,那么需要进行路由的自定义。 在flutter中也就是要使用PageRouteBuilder来自定义一个Route。 先来看下PageRouteBuilder的...
PageRouteBuilder也是PageRoute的一种,在构建PageRouteBuilder的时候,通过控制不同的属性值,我们可以自由控制pageBuilder,transitionsBuilder,transitionDuration,reverseTransitionDuration等特性。 可以看到自由程度还是非常高的。 其中pageBuilder是路由将会跳转的页面,这个是必须要指定的,要不然路由也就没有意义了。 另外路由转...
在Flutter中,点击一个链接,可以跳转到另一个页面。如果想在跳转的过程中,增加动画,可以通过PageRouteBuilder实现。 Navigator.push( context, PageRouteBuilder( opaque: true, transitionDuration: const Dur…
routes:<String,WidgetBuilder>{ '/buttonpage': (BuildContextcontext) { returnButtonSamples(); }, '/routepage': (BuildContextcontext) { returnRouteSamples(); }, }, ); // 当然,为了简洁,我们可以用lambda简写路由注册 routes:<String,WidgetBuilder>{ ...
页面路由对象route由两部分组成,即页面page和过渡效果transition,页面一般只构建一次,过渡是在每个帧的持续时间内动态构建的 Navigator.of(context).push(PageRouteBuilder(opaque:false,pageBuilder:(BuildContextcontext,_,__){returnCenter(child:Text('My PageRoute'));},transitionsBuilder:(___,Animation<double>...
void _openNewPage() { setState(() {Navigator.of(context).push(newMaterialPageRoute<Null>( builder: (BuildContextcontext) {returnnewScaffold( appBar:newAppBar( title:newText('新的页面') ), body:newCenter( child:newText( '点击浮动按钮返回首页', ...
RoutePredicate predicate,{ // 页面状态 Object arguments } ) FlatButton( color: Colors.teal, child: btnText('PushAndRemoveUntil -> SecondPage/false'), onPressed: () { Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (BuildContext context) { ...
关于opaque 的设置过程如下所示,在 MaterialPageRoute 的另一个基类 TransitionRoute 中,可以看到一开始蒙层的 opaque 会被设置为 false ,之后在 completed 会被设置为 opaque ,而 opaque 参数在 PageRoute 里就是 @override bool get opaque => true; ...