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