Flutter 如何设置相对于颤振中上一个变换的路线变换动画

Flutter 如何设置相对于颤振中上一个变换的路线变换动画,flutter,flutter-layout,flutter-animation,flutter-routes,Flutter,Flutter Layout,Flutter Animation,Flutter Routes,我正在尝试实现类似coupertino的路由页面转换。(简要介绍如何将上一条路线和当前路线作为目标并设置动画) 我检查了这个软件包,但使用的逻辑似乎不正确,因为它重建了以前的上下文小部件,并试图在新的路径中破解动画 即使在文档中,它似乎也只是关于导航堆栈顶部的路线 最终你会得到这样的结果: Navigator.of(context).push(AnimatedRoute)( 上一页:小部件,下一页:Page2()); 类AnimatedRoute扩展了PageRouteBuilder{ 最后一

我正在尝试实现类似coupertino的路由页面转换。(简要介绍如何将上一条路线和当前路线作为目标并设置动画)

我检查了这个软件包,但使用的逻辑似乎不正确,因为它重建了以前的上下文小部件,并试图在新的路径中破解动画

即使在文档中,它似乎也只是关于导航堆栈顶部的路线

最终你会得到这样的结果:

Navigator.of(context).push(AnimatedRoute)(
上一页:小部件,下一页:Page2());
类AnimatedRoute扩展了PageRouteBuilder{
最后一页;
最后一页;
AnimatedRoute({this.prevPage,this.nextPage}):超级(
转换持续时间:持续时间(毫秒:700),
页面生成器:(
构建上下文上下文,
动画,,
动画二级动画,
) {
返回下一页;
},
国家:是的,
转换生成器:(
构建上下文上下文,
动画,,
动画二级动画,
孩子,
) {
退货(
子:堆栈(
溢出:溢出。可见,
儿童:[
幻灯片转换(
位置:吐温(
开始:常数偏移(0.0,0.0),
结束:常数偏移(-0.3,0.0),
).制作动画(动画),
孩子:上一页,
),
幻灯片转换(
位置:吐温(
开始:常数偏移(1.0,0.0),
结束:偏移0.0,
).制作动画(动画),
子对象:动画生成器(
动画:动画,
建筑商:(c、w){
退货(
阴影颜色:颜色。黑色,
//标高:10.0*animation.value,
孩子:下一页
);
},
),
)
],
),
);
}
);
}
除了重建,这也不考虑旧部件的状态


一个更好的处理方法是值得赞赏的

还有其他软件包也像您可以使用getx一样,尽管它有很多功能,但它也有很多转换来应用b/w两个页面。如果你愿意,你也可以检查他们的源代码


还有,为什么不使用Cupertino Transition呢?它很棒,并且受Flatter的支持?

您可以使用
PageRouteBuilder
来处理您正在转换的页面和您正在转换的页面的转换,我在下面解释:

注意:
pageBuilder
采用3个参数: 上下文、动画和第二动画<代码>动画用于导航页面,而
第二动画
用于导航页面

假设我们有两页,A和B

A页:

Navigator.of(context).push(
PageRouteBuilder(
pageBuilder:(上下文、动画、第二动画){
返回动画生成器(
动画:动画,
生成器:(上下文,子对象){
返回动画生成器(
动画:第二动画,
生成器:(上下文,innerChild){
retrun Transform.scale(
比例:(animation.value-secondaryAnimation.value),
child:A(),
);
},
);
},
);
},
),
);
B页:

Navigator.of(context).push(
PageRouteBuilder(
pageBuilder:(上下文、动画、第二动画){
返回动画生成器(
动画:动画,
生成器:(上下文,子对象){
返回动画生成器(
动画:第二动画,
生成器:(上下文,子对象){
返回Transform.translate(
偏移量:偏移量(
1.0-animation.value,
0.0,
),
child:B(),
);
},
);
},
);
},
),
);
这将导致如下所示的转换:


(gif说明:第一页随着缩放而向外移动,第二页像幻灯片过渡一样进入)

我需要了解一下他们如何为自定义动画制作两条路线的动画。另外,coupertino routing没有提供太多的自定义功能。您能分享一个代码的工作示例吗?也可以使用3个虚拟页面,我在推车时看到一些小故障routes@bihireboris下面是如何处理命名路线:我发现……我仍然认为,
secondaryAnimation
应该在您正在推动的最上面的路线上处理……在前面的路线上使其更难处理dynamic@bihireboris这是关于我想我们对此无能为力。无论如何,如果我的回答对你有用,我很乐意投赞成票。