flutter Navigator.pushNamedAndRemoveUntil 的用法和参数含义

27 篇文章 0 订阅

flutter 如果要认真学 还是要看看源码的

源码

 

//前进
  Navigator.of(context)
            .pushNamedAndRemoveUntil(
            “跳转路径”,
            ModalRoute.withName('/demo'),//清除旧栈需要保留的栈 不清除就不写这句
            arguments:{"data":“233”}//传值
        );


Navigator.pushNamedAndRemoveUntil(
      context,
     "跳转路径", (route) => false,//true保留跳转的当前栈   false 不保留
    ); 

// 如果当前栈已经销毁了 就不能在返回了 否则直接就是黑屏

flutter 页面栈这个概念还是要理解好

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,针对您的问题,我可以为您提供一个基本的思路: 1. 创建一个自定义的PageRoute类(比如MyPageRoute),继承自PageRoute,并覆写buildTransitions方法。 2. 在buildTransitions方法中,可以通过Animation来控制页面的进出动画。比如可以使用SlideTransition来实现从右往左滑动的效果,可以使用FadeTransition来实现淡入淡出的效果等等。 3. 在自定义PageRoute类中,可以添加一些自定义的属性,来控制动画效果的速度、方向等等。 4. 将MyPageRoute作为参数传递给Navigator.push方法,当需要返回上一页时,使用Navigator.pop()方法来触发自定义的动画效果。 下面是一个简单的示例代码,供您参考: ``` class MyPageRoute<T> extends PageRoute<T> { MyPageRoute({ @required this.builder, RouteSettings settings, this.transitionDuration = const Duration(milliseconds: 300), this.reverseTransitionDuration = const Duration(milliseconds: 300), }) : super(settings: settings, fullscreenDialog: false); final WidgetBuilder builder; final Duration transitionDuration; final Duration reverseTransitionDuration; @override bool get opaque => false; @override bool get barrierDismissible => false; @override Color get barrierColor => null; @override String get barrierLabel => null; @override bool get maintainState => true; @override Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) { return builder(context); } @override Widget buildTransitions(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) { return SlideTransition( position: Tween<Offset>(begin: Offset(1.0, 0.0), end: Offset.zero) .animate(animation), child: FadeTransition( opacity: animation, child: child, ), ); } } ``` 使用方法: ``` Navigator.push(context, MyPageRoute(builder: (context) => MyPage())); ``` 注意:这里的MyPage可以替换成任何你需要跳转的页面,只需将MyPage替换为你需要跳转的页面即可。同时,如果你需要实现其他的动画效果,只需在buildTransitions方法中添加相应的动画即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值