【问题标题】:How to create a virtualized, reorderable list with dynamic sizes, and animated item adding and removal in Flutter?如何在 Flutter 中创建具有动态大小和动画项目添加和删除的虚拟化、可重新排序的列表?
【发布时间】:2021-07-31 22:29:43
【问题描述】:

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

  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 - any idea?) 表明缺少 4。

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

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

我是 Flutter 的新手,因此我非常感谢任何与此主题相关的知识不足的问题。

【问题讨论】:

    标签: flutter


    【解决方案1】:

    自己的答案:

    确实不需要任何插件或分叉。 ReorderableListview.builder 可用于完成所有 5 个操作。

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

    至于动画的出口和入口(即不让列表项看起来以一种迷失方向的方式上下跳跃),通过使用 AnimatedContainer 为高度设置动画真的很简单。单独的 AnimatedList 小部件和 ImplicitlyAnimatedList 插件的存在让我有点失望。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      相关资源
      最近更新 更多