在颤动中向上/向下滚动列表时如何在列表中插入和删除项目?
Posted
技术标签:
【中文标题】在颤动中向上/向下滚动列表时如何在列表中插入和删除项目?【英文标题】:How to insert and remove items into the list when scroll up/down on list in flutter? 【发布时间】:2017-10-29 12:14:24 【问题描述】:我希望用户在列表中向上滚动,然后在列表顶部插入项并在列表底部删除项。 我如何在 flutter 中做到这一点?
itemBuilder 在列表中不好,因为它总是插入但从不删除(或插入删除方法?)。 或者我使用 sliverlist(如何?)或者足够多地使用带有 ListView 的滚动控制器? 哪种方式最好?
所以:
使用哪个列表:ListView/AnimatedList/SliverList? 如何处理列表的向上/向下滚动?重点是:我不想同时添加更多 1000 个项目,但只显示显示。当用户在列表上滚动时,将新项目添加到子项并从隐藏的子项中删除旧项。所以列表子项只包含出现的少数项目。
【问题讨论】:
请提供您目前得到的代码。 无代码。我只是想创建某种 ListView 或 AnimatedList/SilverList,然后在列表上滚动时插入和删除项目。 您能解释一下为什么要删除这些项目吗?您是否担心它们会消耗过多的资源,或者您是否正在尝试实现某种不寻常的效果?当用户试图向后滚动查看您删除的项目时,您希望发生什么? 向后滚动时再次添加已删除的项目。我认为这是一个简单的问题:创建动态列表,在用户滚动时添加/删除项目。使用例如按钮可以很容易地添加和删除项目。但我不使用按钮,我想使用滚动,这是必不可少的部分。那么我该如何处理滚动呢? ListViewer.builder 完全符合您的要求。它会自动为您清理屏幕外元素。 【参考方案1】:响应您的评论,您对延迟加载 ListView 感兴趣,它只构建它的子项,当它们实际可见时。
我认为最好看看ListView.builder。在 ListView 的描述中明确指出:
ListView.builder 采用 IndexedWidgetBuilder,它根据需要构建子级。此构造函数适用于具有大量(或无限)子级的列表视图,因为仅对那些实际可见的子级调用构建器。
这听起来像你想要的行为,不是吗?
【讨论】:
【参考方案2】:ListView 的渲染过程只会渲染可见项。
您应该观看此视频https://www.youtube.com/watch?v=F26pbGaSzfM
【讨论】:
我以前看过这个视频,但这对我不好,因为视频使用 itemBuilder,它只添加新项目到列表子项,但从不删除。所以我不想包含列表子项中的所有项目,只有少数项目出现,因此如果我不渲染隐藏的项目是不够的。 好的,您应该从查看小部件的生命周期以及 Flutter 的工作原理开始 (docs.google.com/presentation/d/…)。基本上,如果你只想要一个包含 10 个项目的列表,你只需要用这些项目构建一个列表,那么你可以更新你的列表并调用setState
来刷新视图
是的,我知道,重要的是我不知道如何处理滚动。
不知道有没有干净的方法可以做到这一点,但是你可以在itemBuilder里面做,看索引,如果index == list.length - 1
就说明你在列表的最后以上是关于在颤动中向上/向下滚动列表时如何在列表中插入和删除项目?的主要内容,如果未能解决你的问题,请参考以下文章