Flutter 如何在颤振中滚动时设置列表中项目的动画

Flutter 如何在颤振中滚动时设置列表中项目的动画,flutter,flutter-sliver,Flutter,Flutter Sliver,我想在Flatter中创建一个网格列表视图,其效果类似于下面右侧显示的效果。瓷砖的移动与速度成比例延迟。可以看到类似的效果 我试图修改SliverGridDelegate实现,以根据滚动速度增加mainAxisStride值 在我的CustomScrollView中,我将修改(SliverAnimatedGrid)与自定义委托一起放置,我称之为SliverGridDelegateWithFixedCrossAxisCountAndAnimation,它基于 SliverGridDelegate

我想在Flatter中创建一个网格列表视图,其效果类似于下面右侧显示的效果。瓷砖的移动与速度成比例延迟。可以看到类似的效果

我试图修改
SliverGridDelegate
实现,以根据滚动速度增加
mainAxisStride

在我的
CustomScrollView
中,我将修改(
SliverAnimatedGrid
)与自定义委托一起放置,我称之为
SliverGridDelegateWithFixedCrossAxisCountAndAnimation
,它基于

SliverGridDelegateWithFixedCrossAxisCountAndAnimation
接受
ScrollController
,并在
getLayout(SliverConstraints约束)
函数中使用其速度来增加网格的
mainAxisStride

目前的执行情况:

@覆盖
SliverGridLayout getLayout(SliverConstraints约束){
断言(_debugassertesvalid());
最终双可用交叉轴范围=
constraints.crossAxisExtent-crossAxisSpacing*(crossAxisCount-1);
final double childCrossAxisExtent=usableCrossAxisExtent/crossAxisCount;
最终双childMainAxisExtent=childCrossAxisExtent/childAspectRatio;
//这里访问滚动控制器速度
最终速度=(controller.position.activity.velocity/100.0)。夹具(0,20);
返回SliverGridRegularTileLayout(
crossAxisCount:crossAxisCount,
mainAxisStride:childMainAxisExtent+mainAxisSpacing+velocity,
crossAxisStride:childCrossAxisExtent+crossAxisSpacing,
childMainAxisExtent:childMainAxisExtent,
childCrossAxisExtent:childCrossAxisExtent,
reverseCrossAxis:axisDirectionIsReversed(约束.crossAxisDirection),
);
}
不幸的是,这是滞后的,并且有一些错误,因为除了测试或滚动控制器的子类之外,不应该访问
controller.position.activity

完整的工作示例可以在中找到


你对如何有效地实现这种或类似的效果有什么想法吗?

嘿@Dominik,你有没有想过如何实现这种效果?@MorganHunt不幸的是没有:/follow on