Flutter 同时设置多个列表项的动画(展开/折叠)

Flutter 同时设置多个列表项的动画(展开/折叠),flutter,listview,expandablelistview,expandable,flutter-animatedlist,Flutter,Listview,Expandablelistview,Expandable,Flutter Animatedlist,是否有一种方法可以将多个listView项目作为一个块一起设置动画,以制作展开/折叠动画。我尝试了AnimatedList,但它一个接一个地为项目设置动画,而不是作为一个组或块。ExpansionFile和ExpansionPanel对我来说不起作用,因为它们在开始时创建所有子项,如果一个组中有100个子项,那么这100个小部件将立即创建,这对性能非常不利,即使是在发布版本中。如果我理解正确,您有一个或多个标题,每个项目都可以有多个项目,可以通过动画折叠这些项目 因此,请在每个标题中进行一些布尔

是否有一种方法可以将多个listView项目作为一个块一起设置动画,以制作展开/折叠动画。我尝试了AnimatedList,但它一个接一个地为项目设置动画,而不是作为一个组或块。ExpansionFile和ExpansionPanel对我来说不起作用,因为它们在开始时创建所有子项,如果一个组中有100个子项,那么这100个小部件将立即创建,这对性能非常不利,即使是在发布版本中。

如果我理解正确,您有一个或多个标题,每个项目都可以有多个项目,可以通过动画折叠这些项目


因此,请在每个标题中进行一些布尔切换,无论是展开还是折叠。然后,该切换将在“展开”上显示一个包装ListView的容器。通过动画控制器,您可以控制容器的高度。

您想要实现的目标实际上并不容易。您必须使用AnimationController创建一个StatefulWidget,为一系列小部件生成值。它们很可能是AnimationBuilder小部件,但是你必须自己实现它。好吧,也许还有其他方法可以实现这一点?基本上,我需要可扩展/可折叠的平铺,孩子们将通过滚动(如ListView.builder)按需创建这些平铺,而不是一次创建所有平铺。您的意思是创建标题小部件,该小部件将容器作为子部件,该容器将ListView.builder作为标题内项目的子部件,对吗?若容器有固定的高度,它不会一次创建所有的子窗口小部件。但是,我不能将其高度设置为400或500。我需要它看起来像一个列表。也许您知道如何设置容器的高度,使其看起来像一个列表?如果创建ListView,您将知道元素的数量。然后你可以取高度,例如
min(noofelement*heightofOneElement,0.7*screenheath)
。看起来很有效,谢谢。但是现在嵌套列表现在可以滚动或与外部列表分开滚动(取决于使用哪个ScrollController)是的,但是当您到达项目列表的末尾时,这不会滚动外部列表吗?否,当我到达内部列表的末尾时,如果我设置了ClampingScrollPhysics,它将停止滚动;如果我设置了NeverScrollPhysics,它将仅滚动外部列表,而内部仅显示符合指定高度的项目