我需要一个具有以下功能的flutter列表包:
- 仅渲染可见范围内/附近的项目(虚拟化(
- 支持不同的物品高度
- 通过拖放重新排序
- 将项目拖动到屏幕边缘时,列表将滚动
- 当项目进入或退出时,列表会很好地设置动画
包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插件的存在让我有点失望。