如何在Flutter中创建具有动态大小和动画项目添加和删除的虚拟化、可重新排序列表



我需要一个具有以下功能的flutter列表包:

  1. 仅渲染可见范围内/附近的项目(虚拟化(
  2. 支持不同的物品高度
  3. 通过拖放重新排序
  4. 将项目拖动到屏幕边缘时,列表将滚动
  5. 当项目进入或退出时,列表会很好地设置动画

包ReorderableListView.builder(https://api.flutter.dev/flutter/material/ReorderableListView/ReorderableListView.builder.html)支持1,3和4。不支持5。当我尝试重新排序动画时,它不适合高度不同的项目(2(。

包implicitly_animated_reorderable_list(https://pub.dev/packages/implicitly_animated_reorderable_list/changelog)支架3和5。在它的自述中没有提到1或2,1月份的一条评论(Flutter:Reorderable and Animated ListView-有什么想法吗?(表明缺少4。

寻求如何实现这一目标的建议:

  • 一个惊人的包,可以做所有5
  • 以某种方式将这些不同包的功能添加到一起的方法。这有可能吗
  • 关于分叉或不分叉以及从头开始的建议
  • 关于分叉,你认为这些功能中最琐碎/最不琐碎的是什么

我是Flutter的新手,所以我对这个主题的任何不了解都会非常感激。

自己的答案:

真的不需要任何插件或分叉。CCD_ 1可以用来完成所有5。

不知道我是如何把代码搞砸的,这让我觉得ReorderableListView.builder没有正确处理不同高度的项目,但无论是什么故障(可能与键有关?(,我都无法重现。有趣的是,我发现的所有文档/教程都只显示静态大小的列表项目,而动态大小的列表项没有问题。

至于设置了动画的出口和入口(即,不要让列表项看起来像是以一种令人迷失方向的方式上下跳跃(,使用AnimatedContainer设置高度动画确实很简单。一个单独的AnimateList小部件和ImplicitlyAnimateList插件的存在让我有点失望。

最新更新