【问题标题】: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 完全符合您的要求。它会自动为您清理屏幕外元素。

标签: android listview insert dart flutter


【解决方案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就说明你在列表的最后
    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 2021-02-16
    • 2021-06-28
    • 2020-11-18
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多