flutter - 向后导航时颤动动画
问题描述
在 Flutter 中导航时,我使用PageRouteBuilder
带有漂亮小动画的 。我真的很喜欢,Curves.elasticOut
但是当我按下手机上的“返回”按钮时,我希望过渡是“不同的”。目前,它只是使用应用的动画,只是向后播放。向后播放时似乎不自然Curves.elasticOut
,好像屏幕需要跳跃才能跳回上一个屏幕。
有没有办法可以Curves.elasticIn
在向后导航时使用?
解决方案
使用示例:
transitionDuration: Duration(milliseconds: 5000),
pageBuilder: (context, animation, secondaryAnimation) => page,
transitionsBuilder: (context, animation, secondaryAnimation, child) {
var begin = Offset(1.0, 0.0);
var end = Offset.zero;
var curve = Curves.elasticIn;
var tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve));
print("primary: ${animation}");
return SlideTransition(
position: animation.drive(tween),
child: child,
);
},
);
animation
in中的参数transitionBuilder
包含status
返回AnimationStatus
.
一个简单的
var curve = animation.status == AnimationStatus.reverse ? Curves.elasticIn : Curves.elasticOut ;
会做。
推荐阅读
- linux - 为什么linux显示“文件描述符4(??????)在...上泄露”以及如何删除它?
- javascript - 发送回用户时填充的数组为空
- apache-flink - Flink 的进程在没有错误的情况下关闭
- python - 判断时间戳是否在 TimeDelta 列表范围内的 Python 函数
- c++ - 可以通过compile-time-if而不是模板特化来实现的场景,反之亦然
- r - 根据两个标准为每组获取多个值
- laravel - Laravel Route [admin.delete-post] 未定义 - 我定义了这条路线
- javascript - 如何用嵌套数组对对象中的值求和?
- flutter - Flutter 提供程序错误“找不到正确的提供程序”
- java - 使用 Math 方法重写数学函数