我有一个GridView,其中显示了网格中项目的自定义小部件。这些项目在出现在网格中时会缩放其大小从0到100%的动画,并使用AnimationController.forward()命令。
我希望当网格中的项目列表更改并且其中一个项目不再在列表中时,我可以在小部件从树中删除之前反转动画,以使其从网格中动画移除。
我尝试在小部件的dispose方法中执行AnimationController.reverse(),但似乎不起作用。
有没有办法在小部件生命周期结束时对其进行动画处理?
我有一个GridView,其中显示了网格中项目的自定义小部件。这些项目在出现在网格中时会缩放其大小从0到100%的动画,并使用AnimationController.forward()命令。
我希望当网格中的项目列表更改并且其中一个项目不再在列表中时,我可以在小部件从树中删除之前反转动画,以使其从网格中动画移除。
我尝试在小部件的dispose方法中执行AnimationController.reverse(),但似乎不起作用。
有没有办法在小部件生命周期结束时对其进行动画处理?
// With predefined options
LiveGrid.options(
options: options,
// Like GridView.builder, but also includes animation property
itemBuilder: buildAnimatedItem,
// Other properties correspond to the `ListView.builder` / `ListView.separated` widget
itemCount: itemsCount,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
crossAxisSpacing: 16,
mainAxisSpacing: 16,
),
);
buildAnimatedItem 可以是您自定义的动画,您可以像这样定义:
Widget buildAnimatedItem(
BuildContext context,
int index,
Animation<double> animation,
) =>
// For example wrap with fade transition
FadeTransition(
opacity: Tween<double>(
begin: 0,
end: 1,
).animate(animation),
// And slide transition
child: SlideTransition(
position: Tween<Offset>(
begin: Offset(0, -0.1),
end: Offset.zero,
).animate(animation),
// Paste you Widget
child: YouWidgetHere(),
),
);
看一下pub的Readme文件,非常清晰明了。