使用动画在 ListView 中显示/隐藏小部件
Posted
技术标签:
【中文标题】使用动画在 ListView 中显示/隐藏小部件【英文标题】:Show/Hide Widgets in ListView with animation 【发布时间】:2021-06-15 21:35:30 【问题描述】:我有 ListTiles 的 ListView,我只想显示第一个。然后在单击按钮后,我想让其他 ListTiles 也出现在 ListView 中(它们一开始是空容器)。
我尝试在 ListTile 和空 Container 之间使用 AnimatedCrossFade 和 AnimatedSwitcher。我也尝试了一些软件包,但没有运气。我尝试的所有操作都将 Container 与 ListTile 交换,但没有动画。
ListView.separated(
physics: ClampingScrollPhysics(),
shrinkWrap: true,
itemBuilder: (context, index2) => index2 < (!seeAll ? 1 : length)
? ListTile(
//stuff
)
: Container(),
separatorBuilder: (context, index) =>
seeAll ? Divider() : Container(),
itemCount: length,
)
这将根据 seeAll 的值在 ListTile 和 Container 之间正确交换,该值会在按下按钮时发生变化,并且将始终显示第一个 ListTile 所需的行为。有没有办法给它添加动画。我不确定为什么上述动画不起作用。 附言 持续时间设置为动画可见的足够时间,所以这不是问题。
【问题讨论】:
这对您有帮助吗? youtube.com/watch?v=FDybDucp_Fg 这似乎很有帮助,但我决定不那样实现它。还是谢谢。 【参考方案1】:您可以尝试 Visible 小部件,但我不确定动画:
itemBuilder: (context, index2) =>
Visible(
visible : index2 < (!seeAll ? 1 : length)
child : ListTile(
//stuff
)
)
【讨论】:
它可以正确显示和隐藏小部件,我只需要对其进行动画处理。也许有一些可见性状态变化的动画。我会试试的 您可以查看所有 Animated* 小部件 api.flutter.dev/flutter/widgets/AnimatedWidget-class.html (AnimatedOpacity,AnimatedContainer ...) 也许您将不得不重新编写代码。 我尝试使用 AnimatedContainer 和 AnimatedSwitcher 和 AnimatedCrossFade 没有成功。我不确定是什么导致动画不显示。以上是关于使用动画在 ListView 中显示/隐藏小部件的主要内容,如果未能解决你的问题,请参考以下文章
在 Flutter 应用程序中的 ListView 滚动上隐藏/关闭键盘