带有小部件列表的 Flutter 动画切换器

Posted

技术标签:

【中文标题】带有小部件列表的 Flutter 动画切换器【英文标题】:Flutter Animated Switcher with List of Widgets 【发布时间】:2021-10-07 22:41:57 【问题描述】:

我有一个CustomScrollView 和几个孩子。应始终显示一个孩子,但应根据条件显示其他孩子:

CustomScrollView(
                        controller: articleState.scrollController,
                        slivers: [
                          ArticleDetailPageHeader(widget.articleShort), // <- should always be displayed
                          ...condition
                              ? _buildShimmerWidgets() // returns List<Widget>
                              : _buildArticleWidgets(context, articleState), // ´´
                        ],
                      )

这是有效的。但我想使用AnimatedSwitcher,这样 UI 看起来会更流畅一些。

我查看了AnimatedSwitcher,它采用Widget 类型的child。现在这就是问题所在!我有一个List&lt;Widget。有什么解决方法吗?

希望我的问题很清楚,如果您需要更多信息,请告诉我!

【问题讨论】:

【参考方案1】:

尝试使用Column 作为AnimatedSwitcher 的子代,然后将List&lt;Widget&gt; 作为Column 的子代传递。

【讨论】:

A RenderViewport expected a child of type RenderSliver but received a child of type RenderFlex 。我正在使用Slivers,这使它变得更加困难.. 哦,好吧,然后尝试使用 SliverList 或通过将列放入 SliverToBoxAdapter 来将列转换为 sliver。

以上是关于带有小部件列表的 Flutter 动画切换器的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:一次多次使用相同的动画小部件

如果添加到动画列表,Flutter 查找已停用小部件的祖先是不安全的

Flutter ListView 滚动动画重叠兄弟小部件

动画列表多个小部件使用相同的 GlobalKey

在 Flutter 中,我怎样才能更改一些小部件并看到它的动画到它的新大小?

Flutter:通过小部件树传递列表实例->不更改列表中实例的值