Flutter实现ListView项全屏过渡动画的技术问询
关于Flutter列表项点击层级过渡动画的实现疑问
我想要实现Material设计规范中那种列表项点击后的层级过渡动画——就是点击列表里的某一项后,该项平滑过渡展开为详情页面的动画效果。
我先是尝试用AnimatedCrossFade来实现,但它要求两个子组件处于同一层级,结果导致详情视图是和整个ListView进行交叉淡入淡出,完全不是我想要的与被点击列表项的联动动画。目前看来,似乎只有Hero动画能支持跨组件的这类动画效果?
不过在使用Hero的过程中,我遇到了几个困惑:
- 是否必须用Hero组件把整个列表项包裹起来?
- 如果Hero的源Widget和目标Widget的子树结构差异较大,会不会影响动画的正常执行?
- Hero动画能不能和
LocalHistoryRoute或者交错动画结合使用?
补充思路
现在我觉得可能需要借助Overlay来实现这个效果,当前的难点在于如何将选中的列表项添加到Overlay中,并且保持它和原列表里点击位置完全一致的屏幕坐标——只要位置能对齐,后续的动画部分应该就容易处理了。我感觉可以采用目标/跟随者的模式来做,比如参考CompositedTransformTarget这类组件的实现思路。
内容的提问来源于stack exchange,提问作者Jacob Phillips
相关产品推荐
相关产品推荐

